Выпадающий список (раскрывающееся меню) — это стандартный элемент интерфейса, широко используемый в различных средах разработки, включая 1С.
Его основное преимущество — экономия места на форме, поскольку список значений отображается только в момент выбора (обычно по клику на поле или кнопке). Элемент поддерживает как статический, так и динамически формируемый набор вариантов, что делает его универсальным инструментом для выбора из множества опций.
Таким образом, выпадающий список сочетает компактность и удобство, показывая содержимое лишь тогда, когда пользователю требуется сделать выбор.
И в данной статье мы рассмотрим основные особенности работы с динамическим списком в управляемом приложении 1С 8.3
Как сделать выпадающий список в 1С 8.3?
Практически любое поле ввода можно настроить для работы со списком выбора (выпадающим списком). Для этого в свойствах элемента управления нужно заполнить свойство “Список выбора”.
При этом возможно два варианта поведения – со включенным флажком “Режим выбора из списка”, и с выключенным.
Рассмотрим оба варианта
Вариант номер один – мы в конфигураторе просто задаем список выбора. В этом случае список будет просто помогать нам при выборе значения, но не будет ограничивать то, что мы хотим выбрать. Например, мы хотим сделать список выбора со строковыми значениями. В этом случае мы можем как подобрать значение из выпадающего списка, так и написать вручную, и платформа нам не помешает.



Обратите внимание, мы можем заполнить свойство “Представление”, в этом случае то, что мы видим при подборе из выпадающего списка, может отличаться от того, что по факту будет подставлено в значение.
Вариант второй – включаем флажок “Режим выбора из списка”. Теперь список будет ограничивать доступные нам значения, и при попытке указать что-то, чего в списке выбора нет, платформа нас об этом предупредит. Также обратите внимание, что теперь вместо самого значения, в поле будет отображаться представление, которое мы задавали в списке выбора.


Работа с выпадающим списком при помощи языка 1С.
Для элемента управления с выпадающим списком можно переопределить стандартное поведение платформы. Можно программно наполнить список в зависимости от различных условий, назначить обработчик события “Обработка выбора”.
Важно! Обратите внимание, что в 8.3. событие НачалоВыбораИзСписка не вызывается.
Пример переопределения списка выбора для элемента при создании на сервере:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) НовыеЗначения = Новый Массив; НовыеЗначения.Добавить(12345); НовыеЗначения.Добавить("тест"); НовыеЗначения.Добавить("проверка"); Элементы.ТестСписокВыбора.СписокВыбора.ЗагрузитьЗначения(НовыеЗначения); Элементы.ТестСписокВыбора.СписокВыбора.Добавить(ТекущаяДата(),"Текущая дата"); КонецПроцедуры
Важно! Значения в списке выбора могут быть любыми, но при выборе они должны соответствовать типу значения реквизита, с которым связан элемент формы. Так, у нас в примере реквизит строковый, а в списке выбора присутствуют дата и число. При выборе этих значений реквизит останется пустым, т.к. не подходят типы.
Можно реализовать и нестандартный обработчик выбора из выпадающего списка.
&НаКлиенте Процедура ТестСписокВыбораОбработкаВыбора(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка) Если ТипЗнч(ВыбранноеЗначение) = Тип("Число") Тогда ВыбранноеЗначение = Формат(ВыбранноеЗначение, "ЧФ=Ч"); ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("Дата") Тогда ВыбранноеЗначение = Формат(ВыбранноеЗначение, "ДЛФ=DDT"); КонецЕсли; Сообщить(ВыбранноеЗначение); КонецПроцедуры
Но здесь снова есть нюанс! Если у нас установлен флажок “Режим выбора из списка”, то все равно будут проверяться исходные значения в списке, и если выбранное значение отсутствует в списке выбора, то реквизит останется пустым. А вот если флажок “Режим выбора из списка” выключить, то будет подставляться новое выбранное значение – то, которое мы переопределили в обработке выбора.