Как сделать поле выбора в 1с в табличной части
Для иллюстрации механизма подбора информации в форме будем использовать задачу подбора элементов справочника Номенклатура в табличную часть документа ПриходнаяНакладная как наиболее распространенную. Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, также как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
- когда в форме справочника будет выполнен интерактивный выбор;
- когда в форме справочника будет вызван метод ОповеститьОВыборе .
Одиночный подбор
При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.
Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:
В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.
Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :
В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .
Множественный подбор
При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Подбор с использованием множественного выбора
Еще одним способом организации подбора является возможность выделения в списке сразу нескольких строк. Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию. Однако возможность выбрать сразу несколько элементов из списка по умолчанию, как правило, отключена.
Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора :
Множественный подбор с использованием множественного выбора
Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Использование метода ОповеститьОВыборе()
Метод формы ОповеститьОВыборе() используется в тех случаях, когда алгоритм формирования данных подбора сложен и кроме собственно выбора элемента справочника от пользователя требуется указание некоторой дополнительной информации. В этом случае метод ОповеститьОВыборе() вызывается тогда, когда вся необходимая информация подбора сформирована.
Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.
Также метод ОповеститьОВыборе() может использоваться в тех случаях, когда требуется передать в форму документа не только выбранный элемент справочника (или массив элементов), а некоторую произвольную структуру данных.
Справка
ТабличноеПоле.ДобавитьСтроку()
Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».
- Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
- Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
- Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).
Доступность: Толстый клиент.
ДанныеФормыКоллекция.Добавить()
Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .
Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Здравствуйте!
Подскажите, пожалуйста, мне необходимо в ТЧ документа в одной из колонок сделать выпадающий список с несколькими значениями, написала вот так, но это неправильно:
&НаСервере
Функция ВернутьСпособыПогашенияЗадолженности()
СписокДляВыбора = Новый ТаблицаЗначений;
СписокДляВыбора.Колонки.Добавить("СпособПогашенияЗадолженности");
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
Возврат СписокДляВыбора;
КонецФункции
&НаКлиенте
Процедура ОплатаПоставщикамСпособПогашенияЗадолженностиНачалоВыбораИзС писка(Элемент, СтандартнаяОбработка)
Элемент.РежимВыбораИзСписка = Истина;
Элемент.СписокВыбора = ВернутьСпособыПогашенияЗадолженности();
КонецПроцедуры
Так не прокатывает, т.к. ТЗ не передать с сервера на клиент. Пробовала передавать Элемент на сервер, чтобы там ему присвоить ТЗ в СписокВыбора, но с клиента на сервер Элемент не передать.
Как тогда быть?
, ну зачем так все усложнять( все делается без кода. у тебя тип реквизита к которому привязана колонка должен быть ПеречисленияСсылка.СпособыПогашенияЗадолженности
и все!
21.11.13 20:56 Сейчас в теме
Я то это понимаю. А вот бухи в бп 2.0 захотели, чтобы у них не было значения Не погашать. Что и сделали программисты, убрали это значение. А теперь необходимо эти изменения перенести на 3.0.21.11.13 20:58 Сейчас в теме
Точнее, чтобы не было Автоматически. Чтобы осталось По документу и не погашать. Да можно без кода тупо заполнить список выбора нужными значениями.А если программно надо, то в модуле менеджера перечисления в процедуре ОбработкаПолученияДанныхВыбора, пишите:
21.11.13 22:26 Сейчас в теме
Я запарился искать ответ на этот же вопрос только в управляемых формах на платформе 8,3,13 и в расширении.
У меня вообще не заходит в обработчик "НачалоВыбораИзСписка"
на ИТС этот вопрос не рассматривается.
Но эксперементально удалось выяснить вот что:
1 В обработчике "НачалоВыбора" поля табличной части прописать отказ стандартной обработки и создать свой список значений (из ссылок типа самого поля конечно) и засунуть в параметр "ДанныеВыбора".
ВСЕ! И ничего больше делать не нужно, все работает по кнопке выбор.
если хочется красивый список выбора как раньше смотри скрин.
значение свойства "БыстрыйВыбор" в значении НЕТ (это значение будет в режиме Авто) показывает команду "показать все", а в значении ДА убирает эту команду! причем если ткнуть "показать все" то в нашем случае список выпадает заново и все равно состоит из наших значений по моему это идиотизм.
Я был искренне удивлен от такого логичного функционала, быстрого выбора и выбора из списка.
по-моему 8,2 был лучше.
На форме расположена табличная часть. Реквизит табличной части - строка. Как сделать, чтобы значение этого реквизита на форме можно было выбирать из списка значений, который формируется на основе текстового файла?
Синтаксис:
ВыбратьИзСписка(<Список значений>, <Элемент формы>, <Начальное значение>)
Параметры:
<Список значений> (обязательный)
<Элемент формы> (необязательный)
Тип: Элемент управления. Элемент формы, около которого будет открыт выпадающий список. Для некоторых элементов (табличный документ, табличное поле) выпадающий список будет показан около активной области. Если не указан, то будет выбран активный элемент формы.
<Начальное значение> (необязательный)
Тип: Число, ЭлементСпискаЗначений. Задает начальный элемент, который будет активным при открытии списка. Если параметр не указан, в списке не будет выбрано начальное значение.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений. Выбранный элемент списка или Неопределено, если пользователь отказался от выбора.
Описание:
Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области.
Примечание:
Если в списке значений указаны картинки, то они отображаются в выпадающем списке.
Пример:
(1) Не туда вас занесло, батенька
(0) Запретить редактирование текста, оставить кнопку выбора из списка и написать обработчик события "НачалоВыбораИзСписка"
(2) Так уж и не туда? Такой способ более универсален.
(3)ТекстовыйДокумент (TextDocument)
Прочитать (Read)
Синтаксис:
Прочитать(<Имя файла>, <Тип файла>)
Параметры:
<Тип файла> (необязательный)
Тип: КодировкаТекста. Указывается тип открываемого файла. В случае, если тип открываемого файла указан, он читается как файл соответствующего формата, при этом, если реальный формат файла не совпадает с указанным, выдается исключение.
Если же формат файла не указан, он читается как файл в формате UTF-8, UTF-16, ANSI. При этом, если файл не удалось прочитать ни в одном из указанных форматов, выдается исключение.
Описание:
Считывает текстовый документ из файла.
Пример:
ТекстДок.Прочитать("catalog.txt");
ищет в каталоге bin. Подскажите как указать путь к папке с конфишурацией.
В этой статье я расскажу, что такое параметры выбора и связи параметров выбора в 1С 8.3, и как с их помощью можно сделать работу пользователей более комфортной.
Связи параметров выбора в 1С
Начнем со связей параметров выбора.
Для большей наглядности, реализуем небольшую задачу. Пусть у нас есть два справочника Контрагенты и ДоговорыКонтрагентов.
Причем справочник Контрагенты является владельцем справочника ДоговорыКонтрагентов.
А также, я создам документ Оплата, в котором нужно указывать контрагента, договор контрагента и сумму.
Если с такими настройками, мы попробуем выбрать договор контрагента, то в форме выбора отобразятся все договоры всех контрагентов.
Что, согласитесь может быть неудобно. И гораздо удобнее, чтобы выходили только договоры выбранного контрагента. Для того, чтобы пользователи могли видеть договоры контрагента, который указан в поле Контрагент, необходимо настроить связи параметров выбора. Для этого, нужно зайти в палитру свойств реквизита Договор, в которой интересует свойство Связи параметров выбора. Если нажать на кнопку «…» этого свойства, то откроется окно «Связи параметров выбора». В этом окне можно настраивать различные связи реквизита, палитру свойств которого мы открыли, с остальными реквизитами. Мы настроим связь с реквизитом Контрагент.
После выбора реквизита Контрагент таблица «Параметры» заполнится автоматически.
В результате, свойство реквизита Связи параметров выбора должно быть заполнено следующим образом.
Всё! Теперь, когда мы будем выбирать договоры в документе Оплата, то будут выходить только договоры выбранного контрагента.
Параметры выбора в 1С
Помимо настроек связи параметра выбора со значением другого реквизита, в 1С 8.3. можно настраивать параметры выбора. Например, можно сделать так, чтобы для выбора были доступны только непомеченные на удаление элементы.
К примеру, у нас бывают договоры контрагентов, которые помечены на удаление.
Эти же элементы отображаются в форме выбора договоров в документе Оплата.
Если мы хотим, чтобы в форме выбора договоров контрагента отображались только непомеченные на удаление элементы справочника, то нужно открыть свойство Параметры выбора реквизита Договор. Откроется форма, в которой необходимо настроить параметры выбора. В моем случае, установить, что Пометка на удаление Ложь.
Если всё сделано правильно, то свойство Параметры выбора реквизита документа Договор должно заполниться.
Если сейчас, мы попытаемся выбрать договор контрагента, то откроется форма выбора, в которой будут отсутствовать элементы, помеченные на удаление.
О том, как работать с проверкой заполнения реквизитов объектов, читайте в этой статье:
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: