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

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

Как сделать поле выбора в 1С: пошаговая инструкция

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

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

В конфигураторе поле выбора появляется автоматически, когда вы перетаскиваете на форму реквизит ссылочного типа (справочник, документ, перечисление, план видов характеристик). Платформа сама назначает вид поля «Поле ввода» с кнопкой выбора, но поведение по умолчанию почти всегда требует донастройки: быстрого выбора, отбора, истории, обработчиков событий.

Ниже разобраны основные сценарии: от добавления поля на форму до программного заполнения списка выбора и обработки выбранного значения. Примеры ориентированы на управляемые формы (режим «Такси»), но большинство приёмов работает и в обычных формах с поправкой на синтаксис.

Добавление поля выбора на форму

Откройте нужный объект конфигурации (справочник, документ, обработку) и перейдите на закладку «Формы». Откройте основную форму объекта — в правой части редактора формы отображается дерево реквизитов. Найдите реквизит ссылочного типа (например, «Контрагент» типа «СправочникСсылка.Контрагенты») и перетащите его в дерево элементов формы в левой части окна.

Платформа автоматически создаст элемент с видом «Поле ввода» и включит кнопку выбора. Если реквизита ещё нет, добавьте его через команду «Добавить реквизит» в панели реквизитов: укажите имя, тип данных (ссылка на справочник, документ или перечисление) и перетащите созданный реквизит на форму. Для реквизитов типа «Перечисление» поле выбора покажет фиксированный список значений перечисления без дополнительной настройки.

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

Порядок добавления поля выбора
  1. 1
    Откройте форму объекта в конфигураторе
  2. 2
    Добавьте или найдите реквизит ссылочного типа
  3. 3
    Перетащите реквизит в дерево элементов формы
  4. 4
    Проверьте вид поля и наличие кнопки выбора
  5. 5
    Сохраните форму и проверьте в режиме предприятия

Настройка основных свойств поля

Выделите элемент формы и откройте палитру свойств. Ключевые свойства для поля выбора: «КнопкаВыбора» — показывает кнопку открытия списка; «КнопкаВыпадающегоСписка» — показывает список выбора, если он заполнен; «КнопкаОчистки» — позволяет сбросить значение; «КнопкаОткрытия» — открывает карточку выбранного объекта.

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

Свойство «РежимВыбораИзСписка» переводит поле в режим выпадающего списка без поиска по ссылке — используйте его, когда вариантов немного и они известны заранее (например, список складов из пяти элементов). В этом режиме список заполняется через свойство «СписокВыбора» элемента формы.

Заполнение списка выбора

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

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.Склад.СписокВыбора.Добавить(

Справочники.Склады.НайтиПоНаименованию("Основной"), "Основной склад");

Элементы.Склад.СписокВыбора.Добавить(

Справочники.Склады.НайтиПоНаименованию("Розничный"), "Розничный");

КонецПроцедуры

Для динамических списков (например, склады конкретной организации) формируйте список запросом: выберите нужные ссылки запросом с отбором, обойдите результат и добавьте элементы. Учитывайте, что поиск по наименованию ненадёжен — при возможности используйте предопределённые элементы справочника или храните связь в дополнительных реквизитах.

Альтернатива ручному заполнению — свойство «СвязиПараметровВыбора». Оно позволяет передать в форму выбора отбор по значению другого поля без единой строки кода: например, показывать только договоры выбранного контрагента. Добавьте связь с указанием имени параметра отбора, пути к полю-источнику и режима «ИзменениеStoredValue» при необходимости очищать поле при смене родителя.

1c
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Контрагент");
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НоваяСвязь);
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);

Обработчики событий поля выбора

Событие «НачалоВыбора» срабатывает при нажатии кнопки выбора до открытия стандартной формы. Здесь можно открыть собственную форму выбора с нестандартным отбором или оформлением: установите «СтандартнаяОбработка = Ложь» и вызовите ОткрытьФорму() с параметрами отбора, указав элемент-владелец.

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

Событие «АвтоПодбор» позволяет переопределить список подсказок при вводе текста — например, искать контрагентов не только по наименованию, но и по ИНН. Событие «ОкончаниеВводаТекста» даёт контроль над результатом ручного ввода: можно сформировать список найденных значений и предложить выбор пользователю.

Типичные ошибки
01
Поиск элемента справочника по наименованию вместо предопределённого элемента — ломается при переименовании
02
Заполнение списка выбора в ПриОткрытии вместо ПриСозданииНаСервере — список пуст или дублируется
03
Отсутствие отбора в форме выбора — пользователь видит тысячи лишних элементов
04
Игнорирование СтандартнаяОбработка в НачалоВыбора — открываются две формы выбора одновременно
05
Изменение состава реквизитов формы напрямую в режиме предприятия через Изменить форму — настройки теряются при обновлении

Настройка формы выбора и отборов

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

Отбор в форме выбора передаётся через параметры при открытии: сформируйте структуру с ключом «Отбор» и вложенной структурой полей отбора. Это работает и без собственной формы — платформа применит отбор к стандартной. Дополнительно полезный параметр — «РежимВыбора» со значением Истина, если форму открывают нестандартным способом.

Для иерархических справочников проверьте свойство «ВыборГруппИЭлементов» поля: по умолчанию могут выбираться и группы, и элементы, что часто приводит к ошибкам учёта. Установите значение «Элементы», если группа не является допустимым значением реквизита.

Способы ограничить выбор

Связи параметров выбора

Декларативно, без кода; подходит для отборов по значениям других полей формы

Параметры формы выбора

Гибкий отбор при открытии формы из НачалоВыбора; требует кода

СписокВыбора элемента

Жёсткий фиксированный список вариантов; подходит для малого числа значений

Форма выбора с отбором по умолчанию

Единые правила для всех мест выбора объекта; требует разработки формы

Проверка результата и ограничения

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

Учитывайте ограничения платформы: список выбора элемента формы не предназначен для тысяч значений — при большом объёме используйте форму выбора с отбором. Быстрый выбор не поддерживает сложную настройку колонок. В полях составного типа (например, «Справочник или документ») сначала выбирается тип значения, что добавляет пользователю лишний шаг — по возможности сужайте состав типа.

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

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

Кнопка выбора открывает список
Норма

Открывается форма или выпадающий список с нужными элементами

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

Пустой список или ошибка обращения к объекту

Отбор по связанному полю
Норма

В списке только элементы, относящиеся к выбранному родителю

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

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

Очистка и повторный выбор
Норма

Поле очищается, связанные реквизиты сбрасываются

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

Остаются устаревшие значения зависимых полей

Частые вопросы о поле выбора в 1С

Как запретить ручной ввод текста в поле выбора?

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

Почему в поле выбора можно выбрать группу справочника, а нужен только элемент?

По умолчанию платформа разрешает выбор и групп, и элементов. Установите у элемента формы свойство «ВыборГруппИЭлементов» в значение «Элементы» — группы перестанут быть доступны для выбора.

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

Используйте событие «ПриИзменении» поля контрагента: в обработчике запросом найдите основной договор (например, помеченный как основной или единственный действующий) и присвойте его реквизиту договора. Если договоров несколько, оставьте поле пустым и дайте пользователю выбрать вручную.

Можно ли добавить поле выбора без изменения конфигурации?

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

Как открыть форму выбора с заранее установленным отбором?

В обработчике «НачалоВыбора» установите «СтандартнаяОбработка = Ложь», сформируйте структуру параметров с ключом «Отбор» (внутри — структура полей отбора) и вызовите ОткрытьФорму() с указанием имени формы списка, параметров и элемента-владельца.

Почему список выбора пустой, хотя я заполнил его в ПриСозданииНаСервере?

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

Итог

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

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