К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как сделать выпадающий список в 1С Предприятие

Пошаговая инструкция: как создать выпадающий список в 1С Предприятие через список значений, перечисления, справочники и программный код. Частые ошибки и проверка результата.

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

Способ реализации выбирается до начала работы. Если набор значений фиксирован и редко меняется (например, «Наличный/Безналичный расчёт»), подойдёт перечисление или список значений. Если значения должны добавляться пользователями без доработки конфигурации — нужен справочник. Ниже разобраны все основные варианты с конкретными действиями в конфигураторе и на управляемой форме.

Материал ориентирован на платформу 1С:Предприятие 8.3 с управляемыми формами — именно они используются в большинстве современных конфигураций. Для обычных форм логика похожа, но настройка выполняется через свойства элемента диалога.

Выбор способа: перечисление, справочник или список значений

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

Неправильный выбор на этом этапе — самая дорогая ошибка. Если сделать список перечислением, а потом бухгалтерия попросит добавить новое значение, потребуется изменение конфигурации и обновление базы. Если же реализовать фиксированный набор через справочник, пользователи смогут удалить или переименовать критичные для логики элементы.

Сравнение вариантов

Перечисление

Фиксированный набор (вид оплаты, статус документа). Изменение только через конфигуратор. Нельзя удалить значение, если оно используется в коде.

Справочник

Расширяемый пользователями список (контрагенты, склады, статьи расходов). Поддерживает иерархию и дополнительные реквизиты.

Список значений

Небольшой набор строк для одной формы (варианты отбора в отчёте). Не хранится в базе как самостоятельный объект.

Программное заполнение

Список формируется кодом при открытии формы, например из результата запроса. Гибко, но требует поддержки кода.

Выпадающий список через перечисление

Перечисление — оптимальный вариант, когда набор значений известен заранее и стабилен: «В наличии / Резерв / Отгружен», «Физическое лицо / Юридическое лицо». Выпадающий список появится автоматически, как только реквизит получит тип «ПеречислениеСсылка».

Создание перечисления и привязка к реквизиту
  1. 1
    Откройте конфигуратор, в дереве конфигурации найдите ветку «Перечисления» и добавьте новый объект, например «СпособыОплаты».
  2. 2
    На закладке «Данные» добавьте значения перечисления: «НаличныйРасчет», «БезналичныйРасчет» — имена задаются латиницей без пробелов, синонимы — по-русски.
  3. 3
    Откройте нужный объект (документ или справочник) и добавьте реквизит с типом «ПеречислениеСсылка.СпособыОплаты».
  4. 4
    Перетащите реквизит на форму объекта. Платформа автоматически отобразит его как поле с выпадающим списком.
  5. 5
    Обновите конфигурацию базы данных (F7) и проверьте список в режиме предприятия.

Обратите внимание на синонимы значений: именно их видит пользователь в выпадающем списке. Имя значения используется только в коде, поэтому переименование синонима не ломает программную логику, а переименование имени — ломает все обращения вида Перечисления.СпособыОплаты.НаличныйРасчет.

Выпадающий список на основе справочника

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

Порядок действий: в ветке «Справочники» создайте новый объект, задайте длину наименования и при необходимости добавьте реквизиты. Затем в документе или другом объекте создайте реквизит с типом «СправочникСсылка.ИмяВашегоСправочника» и перетащите его на форму. Платформа автоматически настроит кнопку выбора и выпадающий список с быстрым поиском по наименованию.

Для справочника полезно сразу заполнить начальные значения, иначе пользователь увидит пустой список. Это делается вручную в режиме предприятия или программно при первоначальном заполнении базы. Также проверьте права: у роли пользователя должно быть право на добавление и чтение элементов справочника, иначе список будет пустым или недоступным.

Фиксированный список значений в свойствах реквизита

Для простых случаев, когда не нужен отдельный объект метаданных, используйте свойство «Список выбора» элемента формы. Это удобно для полей отбора в отчётах и обработках: «За день / За неделю / За месяц». Значения не хранятся в базе как ссылочный объект — в реквизит записывается строка или число.

Чтобы настроить такой список, откройте форму в конфигураторе, выделите поле ввода, откройте палитру свойств и найдите пункт «СписокВыбора». Нажмите кнопку открытия и добавьте строки: в колонке «Значение» — то, что запишется в реквизит, в колонке «Представление» — то, что увидит пользователь. Дополнительно установите свойства «КнопкаСпискаВыбора» и «РедактированиеТекста» (значение «Ложь» запретит ручной ввод произвольного текста).

Ограничение способа: список привязан к конкретной форме. Если тот же набор нужен на десяти формах, придётся дублировать настройки или переходить к программному заполнению из общего модуля.

Программное заполнение выпадающего списка

Когда состав списка зависит от контекста — текущего пользователя, даты, других полей формы — список формируется кодом. Типовое место для этого — обработчик «ПриСозданииНаСервере» управляемой формы. Заполнение выполняется через свойство «СписокВыбора» элемента формы.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.СтатусЗаявки.СписокВыбора.Очистить();
    Элементы.СтатусЗаявки.СписокВыбора.Добавить("Новая", "Новая заявка");
    Элементы.СтатусЗаявки.СписокВыбора.Добавить("ВРаботе", "В работе");
    Элементы.СтатусЗаявки.СписокВыбора.Добавить("Закрыта", "Закрыта");
КонецПроцедуры

Если список зависит от другого поля (классическая связка «Категория → Подкатегория»), перезаполняйте СписокВыбора в обработчике «ПриИзменении» родительского поля, предварительно очищая его. Для ссылочных типов вместо СписокВыбора используйте параметры выбора или связь параметров выбора — это корректнее, так как фильтрация происходит на уровне запроса к базе, а не визуального списка.

Для реквизитов ссылочного типа не фильтруйте список через СписокВыбора — используйте свойство «СвязьПараметровВыбора» или «ПараметрыВыбора». Тогда отбор сработает и в форме выбора, и при быстром вводе по строке, а не только в выпадающем списке.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

После настройки обязательно проверьте поведение списка в режиме предприятия, а не только в конфигураторе. Откройте форму, разверните список, выберите значение, запишите объект и откройте его повторно — выбранное значение должно сохраниться. Проверьте также поведение под пользователем с ограниченными правами.

Контрольные точки

Как проверить результат

Список открывается и содержит значения
Норма

Все ожидаемые значения видны, нет дублей

Тревожный признак

Список пуст или содержит лишние элементы

Сохранение выбранного значения
Норма

После записи и повторного открытия значение на месте

Тревожный признак

Значение очищается или подменяется

Права пользователя
Норма

Список доступен под рабочей ролью

Тревожный признак

У рядового пользователя список пуст из-за прав на справочник

Ручной ввод
Норма

При запрете редактирования ввести произвольный текст нельзя

Тревожный признак

Можно вписать значение вне списка

Типичные ошибки
01
Перечисление вместо справочника: каждое новое значение требует доработки конфигурации и обновления базы.
02
Забытое обновление конфигурации базы данных (F7): изменения видны в конфигураторе, но не работают в режиме предприятия.
03
Заполнение СписокВыбора в клиентском обработчике без контекста сервера: список остаётся пустым.
04
Ручной ввод не запрещён: пользователи вводят произвольный текст, и отборы по полю перестают работать.
05
Переименование значения перечисления, на которое ссылается код: ошибки при обращении из модулей.

Отдельный риск — удаление используемых значений. У перечисления удалить значение, которое записано в документах, платформа не даст без последствий: в старых записях останутся «битые» представления. Перед удалением выполните поиск ссылок на объект (Правка → Найти ссылки) и убедитесь, что значение нигде не используется.

FAQ: частые вопросы о выпадающих списках в 1С

Почему выпадающий список пуст в режиме предприятия?

Чаще всего причины три: не выполнено обновление конфигурации базы данных после изменений, у справочника нет ни одного элемента, либо у роли пользователя нет прав на чтение объекта. Проверьте эти пункты последовательно, начав с обновления через F7.

Как запретить ввод значения, которого нет в списке?

Для поля со списком выбора установите свойство «РедактированиеТекста» в значение «Ложь». Для ссылочных реквизитов используйте режим «Выбор из списка» или настройте параметры выбора — тогда платформа не позволит записать произвольное значение.

Можно ли сделать зависимые списки, где второй зависит от первого?

Да. Для ссылочных реквизитов настройте «СвязьПараметровВыбора» у зависимого поля, указав родительский реквизит. Для строковых списков перезаполняйте СписокВыбора в обработчике «ПриИзменении» родительского поля, предварительно очищая текущее значение зависимого поля.

Чем отличается «Список выбора» от «Параметры выбора»?

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

Как добавить значение в перечисление без программиста?

Никак: значения перечисления хранятся в конфигурации, и изменить их может только разработчик через конфигуратор с последующим обновлением базы. Если пользователи должны пополнять список самостоятельно, замените перечисление на справочник.

Работает ли выпадающий список в мобильном клиенте и веб-клиенте?

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

Итог

Что важно запомнить

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