Выбор значения из списка в 1С 8.3: от кнопки F4 до ПоказатьВыборЭлемента

· 10 мин

Содержание

Выбрать значение из списка в 1С 8.3 проще всего тремя способами: начать печатать название прямо в поле, нажать F4 (или кнопку «…» справа от поля) и найти строку в форме выбора, либо раскрыть выпадающий список стрелкой. Первый способ быстрее, когда вы помните хотя бы часть названия. Форма выбора нужна, когда список большой и без поиска и отборов не обойтись.

Разработчику доступно больше: открыть форму выбора кодом через ОткрытьФорму, показать свой список через ПоказатьВыборЭлемента, ограничить выбор параметрами поля или собрать варианты запросом.

Как выбрать элемент из списка вручную: поле ввода и горячие клавиши

Почти любое поле со ссылкой на справочник, документ или перечисление в 1С работает одинаково. У него есть три «входа» в список.

Ввод по строке

Встаньте в поле и начните печатать. Уже после 2–3 символов платформа покажет выпадающий перечень подходящих значений.

  • 🔤 Ищет по началу наименования и по коду — набор полей задаётся в свойствах справочника.
  • ⬇️ Стрелками выбираете строку, Enter подставляет её в поле.
  • 🧩 Если совпадение единственное, значение подставится сразу после выхода из поля.

Пример: в поле «Контрагент» наберите ромаш — в подсказке появится «Ромашка ООО», если такой контрагент есть в базе.

Форма выбора

Нажмите F4 или кнопку «…» в поле. Откроется форма выбора — тот же список справочника, но в режиме выбора.

  1. Найдите строку: поле поиска в правом верхнем углу формы, курсор в него ставит Ctrl+F.
  2. Двойной щелчок по строке или Enter — значение уходит в поле, форма закрывается.
  3. Если нужной строки нет, создайте её прямо отсюда кнопкой «Создать». После записи новый элемент можно сразу выбрать.

Выпадающий список

Если у поля есть стрелка «▾», нажмите её. Так обычно выбирают значения перечислений (вид операции, ставку НДС) и небольших справочников, у которых включён быстрый выбор.

Горячие клавиши в поле выбора

КлавишаДействие
F4Открыть форму выбора
Shift+F4Очистить поле
Ctrl+FПоиск в открытом списке
Enter / двойной щелчокВыбрать текущую строку
EscЗакрыть форму выбора без изменений

В поле, где уже стоит значение, удобнее не стирать текст, а сразу начать печатать новое название: ввод по строке заменит старое значение.

Поиск, отборы и выбор нескольких строк в форме списка

Форма выбора — обычный список, поэтому в ней работают все инструменты поиска. Когда в справочнике тысячи строк, они экономят больше всего времени.

Поиск и расширенный поиск

  • 🔍 Строка поиска ищет по всем видимым колонкам. Набрали 220 — увидите и коды, и наименования, где есть эти цифры.
  • 🎯 Расширенный поиск (Alt+F) ищет по одной выбранной колонке и с выбранным условием: «по началу строки», «по части строки», «точное совпадение».
  • 📌 Чтобы найти по колонке быстро, встаньте в ячейку с нужным значением и вызовите расширенный поиск — колонка и значение подставятся сами.

Отборы и сортировка

В меню «Ещё» формы списка есть настройка списка. На вкладке отбора задайте условие, например «Поставщик равно ООО Альфа», а на вкладке порядка — сортировку. Отбор сохраняется для формы и действует при следующем открытии.

Щелчок по заголовку колонки сортирует список по ней. Повторный щелчок меняет направление.

Иерархия и группы

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

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

Выбор нескольких строк

Выделить несколько строк можно мышью с клавишами:

  • Ctrl + щелчок — добавить строку к выделенным;
  • Shift + щелчок — выделить диапазон;
  • Ctrl+A — выделить всё видимое.

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

Групповые действия над выделенными строками (пометка на удаление, изменение реквизитов) применяются ко всем строкам сразу. Перед массовой правкой проверьте выделение: отменить групповое изменение одной кнопкой нельзя.

Выбор через карточку элемента: когда список не нужен

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

  • ➕ Создать из поля. Наберите название, которого нет в базе. Платформа предложит создать новый элемент — откроется карточка с уже заполненным наименованием.
  • 📄 Скопировать. В форме выбора встаньте на похожую строку и нажмите F9. Откроется копия, поменяйте нужные поля и запишите.
  • 🔎 Открыть выбранное. В поле, где значение уже стоит, кнопка открытия или щелчок по ссылке в поле показывает карточку выбранного элемента. Так удобно убедиться, что выбрали нужного контрагента, а не тёзку с другим ИНН.

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

Программный выбор из списка: ОткрытьФорму, СписокВыбора и параметры поля

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

Ограничить выбор свойствами поля

Часто кода не нужно вовсе. У поля формы есть свойства:

  • ПараметрыВыбора — фиксированный отбор формы выбора. Например, Отбор.ЭтоГруппа = Ложь или отбор по виду номенклатуры.
  • СвязиПараметровВыбора — отбор по значению другого реквизита. Классика: договор выбирается только по контрагенту из шапки документа.
  • СписокВыбора и РежимВыбораИзСписка — поле показывает фиксированный перечень значений вместо формы выбора.

Те же параметры выбора можно задать у реквизита в конфигураторе — тогда они действуют на всех формах.

Открыть форму выбора кодом

Если нужен выбор по кнопке, а не из поля, откройте форму выбора справочника и обработайте результат:

&НаКлиенте
Процедура ВыбратьНоменклатуру(Команда)

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

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

	Если ИсточникВыбора.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаВыбора" Тогда
		Объект.Номенклатура = ВыбранноеЗначение;
	КонецЕсли;

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

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

Другие полезные параметры формы выбора:

ПараметрЧто делает
ТекущаяСтрокаСтавит курсор на переданное значение
МножественныйВыборРазрешает вернуть массив выделенных ссылок
ВыборГруппИЭлементовЧто можно выбрать: группы, элементы или то и другое
ОтборСтруктура отбора, поля должны быть в списке

Подменить стандартный выбор в поле

Чтобы поле открывало не форму выбора, а ваш список, используйте событие НачалоВыбора:

&НаКлиенте
Процедура СкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

	Список = ДоступныеСклады(Объект.Организация);
	Оповещение = Новый ОписаниеОповещения("СкладВыборЗавершение", ЭтотОбъект);
	Список.ПоказатьВыборЭлемента(Оповещение, "Выберите склад", Список.НайтиПоЗначению(Объект.Склад));

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

&НаКлиенте
Процедура СкладВыборЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт

	Если ВыбранныйЭлемент <> Неопределено Тогда
		Объект.Склад = ВыбранныйЭлемент.Значение;
	КонецЕсли;

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

ПоказатьВыборЭлемента — асинхронная замена устаревшего ВыбратьЭлемент. Если пользователь закрыл окно, в обработчик придёт Неопределено, поэтому проверка обязательна. Функция ДоступныеСклады собирает список запросом — она в следующем разделе.

Для отметки нескольких строк флажками есть ПоказатьОтметкуЭлементов, для короткого меню у кнопки — ПоказатьВыборИзМеню.

Выборка данных для списка выбора запросом

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

&НаСервереБезКонтекста
Функция ДоступныеСклады(Организация)

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Склады.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.Склады КАК Склады
	|ГДЕ
	|	НЕ Склады.ПометкаУдаления
	|	И НЕ Склады.ЭтоГруппа
	|	И Склады.Организация = &Организация
	|
	|УПОРЯДОЧИТЬ ПО
	|	Склады.Наименование";
	Запрос.УстановитьПараметр("Организация", Организация);

	Список = Новый СписокЗначений;
	Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));

	Возврат Список;

КонецФункции

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

Что учесть при выборке:

  • 🧹 Исключайте помеченные на удаление и группы сразу в запросе, а не циклом после.
  • 🔤 Для поиска по части названия используйте ПОДОБНО с параметром: Наименование ПОДОБНО &Строка, где Строка = "%" + Текст + "%".
  • 📏 Ограничьте объём: ВЫБРАТЬ ПЕРВЫЕ 50. Список выбора на 5 000 строк читать никто не будет.
  • 🏷️ Если нужна подпись, отличная от наименования, добавляйте строки через Список.Добавить(Значение, Представление) в цикле по выборке.

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

Динамический список в форме выбора: отборы и скорость

Форма выбора справочника почти всегда построена на динамическом списке. Его не загружают целиком — платформа читает видимую порцию строк и подчитывает при прокрутке.

Отбор из кода

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

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

Если список построен на произвольном запросе с параметрами, значение задают так: Список.Параметры.УстановитьЗначениеПараметра("Дата", ТекущаяДатаСеанса()).

Что тормозит выбор

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

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

Выбор из списка в веб-клиенте и мобильном приложении

Логика выбора в веб-клиенте та же, что в тонком клиенте: ввод по строке, форма выбора, отборы. Разница — в деталях.

Веб-клиент:

  • 🌐 Форма выбора открывается внутри вкладки браузера, а не отдельным окном.
  • ⌨️ Часть сочетаний клавиш может перехватить браузер. Если F4 или Ctrl+F не срабатывает, пользуйтесь кнопкой «…» и полем поиска мышью.
  • ⏳ Каждый ввод по строке — запрос к серверу. При медленном канале подсказка появляется с задержкой, печатайте 3–4 символа и ждите.

Мобильный клиент и мобильное приложение:

  • 📱 Форма выбора занимает весь экран , выбор — касанием строки.
  • 🔍 Поиск — основной инструмент: прокручивать длинный список на телефоне неудобно.
  • 🚫 Модальных окон нет совсем, поэтому ВыбратьЭлемент, ОткрытьФормуМодально и Вопрос не работают. Только асинхронные Показать… и ОткрытьФорму с описанием оповещения.

Если код писали под тонкий клиент с модальными вызовами, в веб-клиенте и на мобильном он упадёт с ошибкой Использование модальных окон в данном режиме запрещено. Лечится переводом на асинхронные методы, как в примерах выше.

Какой способ выбора нужен в вашей форме?

Ошибки при выборе из списка и как их обойти

Диагностика: выберите симптом

Частые вопросы

Почему ввод по строке находит не все элементы?
Платформа ищет по началу строки в полях, заданных для ввода по строке, и показывает ограниченное число совпадений. Уточните запрос или откройте форму выбора.
Можно ли выбрать значение, которого нет в справочнике?
В ссылочное поле — нет, только существующий элемент. Его можно создать прямо из формы выбора кнопкой «Создать».
Как вернуть стандартный вид формы выбора после своих настроек?
В меню «Ещё» откройте настройку формы и выберите стандартные настройки. Сохранённые отборы списка сбрасываются там же, в настройке списка.
Чем СписокВыбора отличается от формы выбора?
СписокВыбора — фиксированный короткий перечень прямо в поле. Форма выбора — полноценный список справочника с поиском, отборами и порционным чтением.
Работает ли ПоказатьВыборЭлемента на сервере?
Нет, это клиентский метод. Данные для списка собирают на сервере, а показывают на клиенте.