Разработка и Конфигурация · 11 мин
Выпадающий список в 1С 8.3: как сделать и настроить
Как сделать выпадающий список в 1С 8.3: настройка списка выбора, связь с реквизитом справочника, перечисления и программное заполнение. Пошаговая инструкция.
Выпадающий список в 1С 8.3 — это поле ввода, у которого задан набор допустимых значений. Пользователь не вводит текст вручную, а выбирает готовый вариант из раскрывающегося списка. Это снижает количество ошибок при вводе и ускоряет заполнение документов и справочников.
Способ создания такого списка зависит от типа данных. Если значения фиксированы и редко меняются — подходит перечисление или свойство «Список выбора». Если значения должны добавляться пользователями в режиме предприятия — нужен справочник. Ниже разобраны все основные варианты: от простого списка строк до программного заполнения.
Какие способы создания выпадающего списка существуют
В платформе 1С:Предприятие 8.3 есть четыре основных механизма, которые дают пользователю раскрывающийся список значений:
- Свойство «Список выбора» — статичный набор строк, задаётся в конфигураторе или программно;
- Перечисление — объект конфигурации с фиксированными значениями, заданными разработчиком;
- Справочник — список, который пополняется пользователями в режиме предприятия;
- Программное заполнение — список формируется кодом в модуле формы, например по условию.
Выбор зависит от того, кто и как часто будет менять значения. Если набор постоянен (например, «Наличный/Безналичный расчёт») — достаточно перечисления или списка выбора. Если значения появляются в процессе работы (контрагенты, склады, статьи расходов) — нужен справочник.
Сравнение вариантов
Подходит для 2–10 постоянных строковых значений. Ограничение: изменить список может только разработчик.
Подходит для фиксированных бизнес-статусов. Ограничение: добавление значений требует обновления конфигурации.
Подходит для динамических списков, которые ведут пользователи. Ограничение: требуется создать объект метаданных.
Подходит, когда состав списка зависит от условий. Ограничение: нужны навыки работы с модулем формы.
Как сделать выпадающий список через свойство «Список выбора»
Это самый быстрый способ, не требующий создания новых объектов конфигурации. Подходит для реквизитов с типом «Строка», «Число» или «Дата», когда набор значений известен заранее.
- 1Откройте конфигуратор и найдите нужный объект (документ, справочник или обработку).
- 2Откройте форму объекта и выделите поле ввода, которое должно стать выпадающим списком.
- 3Откройте палитру свойств (правый клик — «Свойства»).
- 4Найдите свойство «СписокВыбора» и нажмите кнопку выбора (три точки).
- 5Добавьте значения: в колонке «Значение» укажите хранимое значение, в «Представление» — текст для пользователя.
- 6Убедитесь, что у поля включена кнопка списка выбора (свойство «КнопкаСпискаВыбора» = «Да»).
- 7Обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия.
После этого в режиме предприятия у поля появится кнопка со стрелкой вниз, при нажатии на которую откроется список заданных значений. Пользователь сможет только выбрать вариант, но не ввести произвольный текст — если дополнительно отключить свойство «Редактирование текста».
Если список нужен для реквизита всех форм объекта, свойство «Список выбора» можно задать не у поля формы, а у самого реквизита в дереве метаданных. Тогда настройка применится ко всем формам, где выводится этот реквизит.
Как сделать выпадающий список через перечисление
Перечисление — правильный выбор, когда значения являются частью логики программы: статусы документа, виды операций, варианты расчёта. К значениям перечисления можно обращаться в коде по имени, что делает алгоритмы читаемыми.
Порядок создания:
- В дереве конфигурации найдите ветку «Перечисления», добавьте новый объект и дайте ему имя, например «ВидыОплаты».
- На закладке «Данные» добавьте значения перечисления: «Наличные», «Безналичные», «Смешанная».
- В нужном объекте (документе или справочнике) создайте реквизит с типом «ПеречислениеСсылка.ВидыОплаты».
- Перетащите реквизит на форму — платформа автоматически отобразит его как выпадающий список.
Дополнительной настройки формы обычно не требуется: для ссылок на перечисление платформа сама показывает список значений при нажатии на кнопку выбора. В коде значение проверяется так: Если Объект.ВидОплаты = Перечисления.ВидыОплаты.Наличные Тогда ...
Выпадающий список на основе справочника
Если список значений должен пополняться пользователями без участия разработчика, создайте справочник и свяжите с ним реквизит. Это стандартный механизм для контрагентов, номенклатуры, складов, подразделений и подобных данных.
Действия в конфигураторе:
- Добавьте новый справочник, например «СтатьиРасходов». Минимально достаточно стандартного реквизита «Наименование».
- В объекте, где нужен список (документе или другом справочнике), создайте реквизит с типом «СправочникСсылка.СтатьиРасходов».
- Добавьте реквизит на форму. Платформа покажет поле с кнопкой выбора, открывающей список элементов справочника.
Чтобы у поля появился именно выпадающий список с быстрым выбором, включите у поля формы свойство «КнопкаСпискаВыбора» и, при необходимости, «БыстрыйВыбор» у реквизита справочника в метаданных. Тогда пользователь увидит компактный список без открытия полной формы выбора.
Дополнительно можно настроить отбор: например, показывать только не помеченные на удаление элементы или только элементы конкретной группы. Это делается через свойство «ПараметрыВыбора» или «СвязиПараметровВыбора» у поля формы.
Если справочник большой (тысячи элементов), не отключайте автоматический ввод по строке. Пользователю удобнее набрать первые буквы наименования, чем листать длинный выпадающий список.
Программное заполнение списка выбора
Когда состав списка зависит от условий — даты, роли пользователя, других реквизитов объекта — список формируется кодом в модуле формы. Обычно это делается в обработчике «ПриСозданииНаСервере».
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокЗначений = Элементы.СпособДоставки.СписокВыбора;
СписокЗначений.Добавить("Курьер", "Курьерская доставка");
СписокЗначений.Добавить("Самовывоз", "Самовывоз со склада");
Если Объект.ВидОперации = Перечисления.ВидыОпераций.Опт Тогда
СписокЗначений.Добавить("ТК", "Транспортная компания");
КонецЕсли;
КонецПроцедуры
При программном заполнении важно очищать список перед повторным формированием методом Очистить(), иначе значения будут дублироваться при каждом вызове обработчика. Если список зависит от другого поля формы, пересоздавайте его в обработчике «ПриИзменении» этого поля.
Для динамических списков (например, списка доступных складов конкретной организации) значения получают запросом к базе данных и загружают в список выбора. Это безопасная операция чтения, она не меняет данные информационной базы.
Проверка результата и типичные ошибки
После настройки обновите конфигурацию базы данных (F7 в конфигураторе), запустите режим предприятия и откройте форму объекта. У целевого поля должна появиться кнопка со стрелкой, а при нажатии — список ожидаемых значений.
Как проверить результат
Стрелка вниз видна, список раскрывается
Кнопки нет — проверьте свойство «КнопкаСпискаВыбора»
Показываются все заданные варианты, без дублей
Дубли — список не очищался перед заполнением; пустой список — ошибка в коде или свойстве
Выбранное значение записывается в реквизит и сохраняется после записи объекта
Значение пропадает — поле не связано с реквизитом данных
Ограничения и когда обратиться к разработчику
Простые настройки — список выбора, перечисление, связь со справочником — выполняются штатными средствами конфигуратора и не требуют глубокого знания языка. Однако любые изменения вносите сначала на копии базы: ошибочное обновление конфигурации на рабочей базе может нарушить работу пользователей.
К программисту стоит обратиться, если нужны: сложные отборы значений по нескольким условиям, связанные выпадающие списки (значения одного зависят от другого), выбор с картинками или доработка типовой конфигурации, находящейся на полной поддержке.
Что важно запомнить
Для фиксированных значений используйте свойство «Список выбора» или перечисление, для пополняемых пользователями — справочник, для условных списков — программное заполнение в модуле формы. Всегда проверяйте привязку поля к реквизиту и тестируйте изменения на копии базы.
Частые вопросы
Как запретить ввод произвольного текста в поле со списком выбора?
Откройте палитру свойств поля формы и установите свойство «РедактированиеТекста» в значение «Нет». Пользователь сможет только выбирать значения из списка, но не вводить свой вариант. Для ссылочных типов (справочник, перечисление) платформа ограничивает ввод допустимыми значениями автоматически.
Почему выпадающий список пустой, хотя значения заданы?
Чаще всего список выбора задан у поля одной формы, а вы проверяете другую. Также проверьте, что свойство «КнопкаСпискаВыбора» включено, и что при программном заполнении обработчик с кодом действительно выполняется — поставьте точку останова в отладчике.
Можно ли сделать выпадающий список без конфигуратора?
Нет, добавление списка выбора, перечисления или реквизита требует изменения конфигурации. В режиме предприятия пользователь может только заполнять уже существующие справочники. Некоторые типовые конфигурации имеют встроенные механизмы дополнительных реквизитов со списком значений — они настраиваются в режиме предприятия через «Администрирование — Общие настройки — Дополнительные реквизиты».
Чем список выбора отличается от перечисления?
Список выбора — это просто набор строк у конкретного реквизита, к нему нельзя обратиться по имени из кода удобным образом. Перечисление — самостоятельный объект конфигурации: его значения доступны во всех модулях, участвуют в запросах и проверках условий. Для значений, влияющих на логику программы, всегда выбирайте перечисление.
Как сделать, чтобы состав списка зависел от другого поля?
Используйте обработчик «ПриИзменении» управляющего поля: в нём очищайте список выбора зависимого поля методом Очистить() и заполняйте заново по условию. Для ссылочных полей вместо этого применяют свойство «СвязиПараметровВыбора», которое фильтрует значения по владельцу или другому реквизиту без написания кода.
Есть ли ограничение на количество значений в списке выбора?
Жёсткого предела, который мешал бы работе, у списка значений нет, но длинный список неудобен пользователю и замедляет выбор. Практическое правило: если вариантов больше 15–20 или они меняются в процессе работы, переносите их в справочник с быстрым поиском по строке.