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

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

Что такое форма выбора в 1С и как с ней работать

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

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

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

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

Где используется форма выбора

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

Второй типичный сценарий — подбор в табличную часть. Например, в документе «Реализация товаров и услуг» кнопка «Подбор» открывает форму выбора номенклатуры, но в режиме множественного выбора: можно добавить несколько позиций подряд, не закрывая форму. Это реализуется параметром «МножественныйВыбор».

Третья область — отчёты и обработки. При настройке отбора отчёта пользователь выбирает значения через формы выбора. Наконец, форма выбора открывается программно из кода, когда разработчик вызывает методы ОткрытьФорму или ПоказатьВыбор с указанием формы выбора объекта.

Виды форм выбора

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

Основные виды:

  • Автоматически генерируемая форма выбора — платформа сама строит её для любого ссылочного объекта, если разработчик не создал собственную. Содержит стандартный список с колонками по умолчанию.
  • Основная форма выбора — форма, созданная разработчиком в конфигураторе и назначенная основной в свойствах объекта. Открывается по умолчанию при выборе значений этого типа.
  • Произвольная форма выбора — дополнительная форма, которую открывают программно для специальных сценариев: с нестандартным отбором, дополнительными колонками или кнопками.
  • Форма списка в режиме выбора — обычная форма списка, открытая с параметром РежимВыбора, когда отдельная форма выбора не нужна.

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

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

Автоматическая форма выбора

Подходит, когда достаточно стандартного списка. Ограничение: нельзя добавить свои колонки, кнопки и логику.

Основная форма выбора

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

Форма списка в режиме выбора

Компромисс: не нужна отдельная форма, достаточно открыть форму списка с РежимВыбора. Минус — интерфейс ориентирован на просмотр, а не на выбор.

Как пользователю работать с формой выбора

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

Быстрый поиск работает по текущей колонке: достаточно начать вводить название, и курсор перейдёт к подходящей строке. Во многих конфигурациях доступен полнотекстовый поиск по нескольким полям одновременно — кнопка «Найти» или строка поиска в командной панели.

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

Порядок действий при выборе значения
  1. 1
    Нажмите кнопку выбора в поле ввода (или клавишу F4)
  2. 2
    При необходимости перейдите в нужную группу справочника в панели навигации
  3. 3
    Найдите элемент через строку поиска или настройте отбор
  4. 4
    Выделите строку и нажмите «Выбрать» или дважды щёлкните по ней
  5. 5
    Убедитесь, что значение подставилось в поле ввода

Настройка формы выбора в конфигураторе

Разработчик создаёт форму выбора в конфигураторе: в дереве конфигурации открывает нужный справочник или документ, переходит на закладку «Формы» и добавляет форму вида «ФормаВыбора». Чтобы она открывалась по умолчанию, её назначают основной в свойствах объекта.

Ключевой момент — установка свойства РежимВыбора у формы. Если форма создана как форма выбора, платформа выставляет его автоматически. При открытии формы программно режим задаётся параметром:

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("РежимВыбора", Истина);

ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);

ПараметрыФормы.Вставить("Отбор", Новый Структура("Поставщик", Истина));

ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, Элементы.Контрагент);

Владелец формы (третий параметр) определяет, куда вернётся выбранное значение. Если указать поле ввода, платформа сама подставит результат. Для нестандартной обработки используют обработчик ОбработкаВыбора в форме-владельце.

bsl
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("ЭтоГруппа", Ложь));
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Номенклатура);

Отборы и ограничение доступных значений

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

Более надёжный механизм — связи параметров выбора, настраиваемые в конфигураторе у поля ввода. Они работают и при быстром вводе по строке, и при открытии формы выбора, и не дают ввести «чужое» значение вручную. Отбор же в форме выбора пользователь теоретически может снять.

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

Типичные ошибки и их последствия

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

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

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

Как проверить, что форма выбора работает правильно

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

Отдельно проверьте граничные случаи: выбор при пустом обязательном отборе (например, договор без выбранного контрагента), отмену выбора клавишей Esc, повторное открытие формы — отборы и настройки не должны «залипать» некорректно между сеансами работы.

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

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

Открытие формы из поля ввода
Норма

Форма открывается с заданным отбором, список заполнен

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

Ошибка при открытии или пустой список без причины

Выбор элемента
Норма

Двойной клик или «Выбрать» подставляет значение в поле

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

Форма закрывается, но поле остаётся пустым

Отбор по владельцу
Норма

Показываются только элементы выбранного владельца

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

Видны все элементы или отбор сбрасывается

Отмена выбора
Норма

Esc закрывает форму без изменения поля

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

Поле очищается или подставляется случайное значение

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

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

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

Практический вывод: если пользователю нужно «посмотреть и поработать» — открывайте форму списка, если «указать значение» — форму выбора. Смешение режимов путает пользователей и приводит к ошибкам ввода данных.

Итог

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

Форма выбора 1С — это форма для выбора ссылочного значения с возвратом результата в поле ввода. Она бывает автоматической и созданной разработчиком, управляется параметрами РежимВыбора, Отбор и МножественныйВыбор, а корректность её работы проверяется связкой «открытие — выбор — подстановка значения».

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

Чем форма выбора отличается от быстрого ввода в поле?

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

Почему в форме выбора не виден нужный элемент справочника?

Чаще всего виноват сохранённый отбор: откройте «Ещё» → «Настроить список» и сбросьте условия. Также проверьте, что вы находитесь в нужной группе иерархии, элемент не помечен на удаление и у вас есть права на его просмотр.

Как разрешить выбор нескольких элементов сразу?

При открытии формы передайте параметр МножественныйВыбор со значением Истина. Тогда пользователь сможет отмечать несколько строк, а результат вернётся массивом значений. Обработчик результата в форме-владельце должен быть готов принять массив, а не одиночное значение.

Можно ли создать новый элемент прямо из формы выбора?

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

Как открыть форму выбора программно и получить результат?

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

Почему отбор в форме выбора иногда не срабатывает?

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