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

Быстрый старт · 13 мин

1С: как выбрать элемент в форме списка

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

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

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

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

Как устроена форма списка и режим выбора

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

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

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

Выбор одного элемента: пошагово для пользователя

Базовый сценарий — подставить значение в поле документа или справочника. Последовательность одинакова для контрагентов, номенклатуры, договоров и других ссылочных полей.

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

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

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

Множественный выбор и подбор нескольких элементов

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

Множественный выбор доступен, если разработчик разрешил его для конкретного поля или табличной части. Тогда в форме выбора можно выделять строки с зажатой клавишей Ctrl (произвольные строки) или Shift (диапазон), а кнопка «Выбрать» вернёт все выделенные элементы. Если кнопка «Выбрать» неактивна при выделении нескольких строк — множественный выбор для этого поля не включён, и вернуть можно только один элемент.

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

Способы выбрать несколько элементов

Множественный выбор (Ctrl/Shift)

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

Форма подбора

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

Повторный выбор по одному

Универсальный вариант, когда ничего другого не доступно. Медленно при большом числе позиций.

Отбор и поиск в форме списка: как быстро найти нужное

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

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

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

Если одним и тем же отбором пользуетесь регулярно — например, «только активные склады» — сохраните настройку списка под понятным именем через «Ещё» → «Сохранить настройки». Это избавляет от повторной настройки условий при каждом открытии.
ПЗ
Практическое замечание

Программное открытие формы выбора: для разработчика

В управляемом приложении форму выбора открывают методом ОткрытьФорму() с передачей параметров. Ключевые параметры: РежимВыбора включает режим выбора, МножественныйВыбор разрешает выбор нескольких элементов, Отбор задаёт структуру отбора, ТекущаяСтрока позиционирует список на конкретном элементе.

bsl
&НаКлиенте
Процедура ВыбратьКонтрагента(Команда)
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора", Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
	Отбор = Новый Структура("Поставщик", Истина);
	ПараметрыФормы.Вставить("Отбор", Отбор);
	ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, Элементы.Контрагент);
КонецПроцедуры

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

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

Обработка результата выбора в коде

Когда форма выбора закрывается, выбранное значение передаётся владельцу. Если владельцем назначено поле ввода, платформа сама подставляет значение. Если владелец — форма, срабатывает обработчик ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора), в котором значение нужно разобрать: при одиночном выборе это ссылка, при множественном — массив ссылок.

bsl
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
		Для Каждого Элемент Из ВыбранноеЗначение Цикл
			НоваяСтрока = Объект.Товары.Добавить();
			НоваяСтрока.Номенклатура = Элемент;
		КонецЦикла;
	Иначе
		Объект.Контрагент = ВыбранноеЗначение;
	КонецЕсли;
КонецПроцедуры

Альтернатива обработчику — открытие формы с описанием оповещения через ОткрытьФорму() с последним параметром или через ПоказатьВводЗначения() для простых случаев. Оповещение удобнее, когда логика обработки локальна и не должна смешиваться с другими источниками выбора в общем обработчике.

Типичные проблемы и их решения

Чаще всего пользователи и разработчики сталкиваются с ограниченным набором ситуаций. Разбор каждой экономит время на поиске причины.

Типичные ошибки
01
Форма открыта без режима выбора — двойной щелчок открывает элемент на редактирование вместо подстановки в поле. Решение: открывайте форму из поля ввода или передайте РежимВыбора = Истина.
02
На списке остался старый отбор — нужный элемент существует, но не виден. Решение: «Ещё» → «Настроить список» и снять лишние условия.
03
Нет прав на элемент или включён RLS — часть записей скрыта ограничением доступа. Решение: проверить права пользователя, а не настройки формы.
04
Неверное имя реквизита в структуре Отбор — отбор молча не применяется. Решение: сверить имя с конфигуратором.
05
Ожидание массива при одиночном выборе или наоборот — ошибка типа в ОбработкаВыбора. Решение: проверять тип ВыбранноеЗначение перед использованием.

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

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

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

Значение в поле после выбора
Норма

Поле заполнено, отображается наименование элемента, документ сохраняется без ошибок

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

Поле пустое или появляется сообщение о неверном типе значения

Состав списка в форме выбора
Норма

Видны все ожидаемые элементы, поиск находит нужный

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

Часть элементов отсутствует — вероятен отбор или ограничение прав

Множественный выбор
Норма

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

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

Переносится только одна строка — множественный выбор не включён

FAQ

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

Форма списка открыта в обычном режиме просмотра, а не в режиме выбора. Закройте её и откройте выбор из поля ввода — кнопкой выбора рядом с полем или клавишей F4. Тогда двойной щелчок будет подставлять значение в поле.

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

Выделяйте строки с зажатой Ctrl (произвольные) или Shift (диапазон) и нажмите «Выбрать». Это работает только если для поля разрешён множественный выбор. В торговых документах вместо этого используйте кнопку «Подбор» — она позволяет заодно указать количество.

Элемент точно есть в базе, но в форме выбора его не видно. Что делать?

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

Как программно открыть форму выбора с отбором по владельцу?

Передайте в ОткрытьФорму() структуру параметров с ключами РежимВыбора = Истина и Отбор = Новый Структура("Владелец", СсылкаНаВладельца). Для подчинённых справочников платформа часто делает это автоматически через связи параметров выбора, если поле настроено стандартно.

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

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

Почему отбор, заданный в коде, не срабатывает?

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

Итог

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

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