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