Форма выбора списка значений

Форма выбора списка значений

В данной статье описан пример создания универсальной Формы работы со списком значений:

1. Создадим в общих формах новую форму "ФормаРаботыСоСпискомЗначений", добавим на ней Табличное поле (Имя — СписокЗначений) и КоманднаяПанельСписокЗначений

На закладке Реквизиты, появится реквизит СписокЗначений

2. Привяжем КоманднаяПанельСписокЗначений к Источнику действий — СписокЗначений

3. В свойствах табличного поля пропишем События — Выбор и ПередНачаломДобавления

4. В модуле Формы пропишем обработку событий

Все, форма создана

Использовать ее для выбора значения, можно с помощью кода:

Код 1C v 8.х
Пользователь увидит окно выбора значения:

1. Выбор одного значения из списка в режиме использования модальности

Воспользуемся методом ВыбратьИзСписка ()

Метод ВыбратьИзМеню () работает по аналогии с методом ВыбратьИзСписка ();

2. Выбор одного значения из списка без использования модальности

Метод: ПоказатьВыборЭлемента ()

3. Выбор нескольких значений из списка в режиме использования модальности

Метод: ОтметитьЭлементы

4. Выбор нескольких значений из списка без использования модальности

Метод: ПоказатьОтметкуЭлементов ()

Попробуем реализовать программную установку значений отбора в форме выбора, получаемой через "Подбор" формы редактирования списка значений. Напрямую повлиять на форму редактирования нельзя, она создается средствами платформы. Сразу же напрашивается вариант создания своей формы редактирования списка, с расширенным функционалом и красивыми кнопками. Но мы пойдем другим путем и попробуем передать параметры отбора в форму выбора необходимого справочника. Так же рассмотрим варианты реализации в обычном и управляемом приложениях.

Реализуем простую конфигурацию с двумя простыми справочниками:
-"Подразделения";
— "Склады", с реквизитом "Подразделение", тип "Справочник.Подразделения".

Начнем эксперименты с обычного приложения. Добавляем обычную форму выбора для справочника "Склады". Так же добавляем обработку, на форму выносим реквизиты:
— Подразделение, тип "СписокЗначений", тип значений списка "СправочникСсылка.Подразделения";
— Склад, тип "СписокЗначений", тип значений списка "СправочникСсылка.Склады".

Читайте также:  Запуск ubuntu с флешки без установки

Теперь попробуем реализовать фильтрацию складов. У списка значений есть свойство ДоступныеЗначения, которое позволяет настроить ограничение значений списка, в том числе и в диалоге редактирования. Попробуем реализовать отбор через этот механизм.
Предварительно, в модуле менеджера справочника "Склады" добавлю функцию:

Теперь, при изменении значения реквизита "Подразделение" будем выполнять следующую процедуру:

В результате, получаем следующую картину. Список выбора значений ограничивается по выбранному подразделению, но подбор все равно показывает весь справочник, а выбор значения, не принадлежащего доступным значениям, преобразуется в пустое значение.

Теперь остается применить эти значения к отбору списка формы выбора справочника. При открытии через "Подбор" в форму выбора, как владелец формы, передается табличное поле формы редактирования списка. Табличное поле, в свою очередь, содержит колонку, с элементом управления, у которого свойство "СписокВыбора" как раз и содержит необходимый нам список значений. Добавляем следующий код в процедуру ПриОткрытии обычной формы выбора справочника "Склады":

В результате, мы и выбираемые значения ограничили, и отбор в подборе установили.

Теперь реализуем тоже самое на управляемых формах. Создаем форму с такими же реквизитами.

Видим, что варианты для выбора в списке мы ограничили, но кнопка подбора не активна. Поэтому реализация задачи через ДоступныеЗначения в нашем случае не подходит.

Переделаем процедуру ПодразделениеПриИзмененииНаСервере, будем использовать свойство ПараметрыВыбора элемента формы:

Подбор стал активен, при добавлении элемента списка на форму выбора накладывается отбор, но форма выбора, вызываемая через подбор все равно показывает все значения справочника.

Отойдем ненадолго от наложения отбора и выполним небольшую оптимизацию. Сейчас мы передаем в параметр выбора список значений, формируемый на сервере. Размер этого списка, в свою очередь может быть довольно таки массивным, например для номенклатуры. Соответственно, мы можем получить значимую задержку при его формировании и передаче клиенту. Управляемые формы позволяют уйти от предварительного формирования набора значений для фильтрации.
Реализуем отбор по подразделению склада на стороне клиента:

Читайте также:  Хорошая блютуз гарнитура для телефона

В форме выбора добавляем процедуру ПриОткрытии, так же смотрим владельца формы (так же можно посмотреть через родителей владельца, как называется системная форма списка :)), читаем параметры выбора и устанавливаем отбор на список:

Готово, после таких нехитрых манипуляций у нас и добавление элементов, и подбор значений ограничены выбранными элементами.

Ссылка на основную публикацию
Adblock detector