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

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

Как открыть список выбора в 1С

Как открыть список выбора в 1С программно и в пользовательском режиме: методы ПоказатьВыборИзСписка, ОткрытьФормуВыбора, работа с выпадающим списком поля ввода.

Список выбора в 1С — это выпадающий набор значений, который пользователь видит при работе с полем ввода, колонкой таблицы или при вызове из кода. Открыть его можно двумя путями: в пользовательском режиме (кликом или клавишами) и программно — через методы встроенного языка. Чаще всего вопрос возникает у разработчиков, когда нужно показать список по кнопке, при начале выбора или из обработчика события.

Ниже разобраны оба сценария: быстрое открытие списка в интерфейсе и программные способы — ПоказатьВыборИзСписка, ОткрытьФормуВыбора, настройка свойства «КнопкаСпискаВыбора» и выпадающий список поля ввода. Примеры приведены для управляемых форм (тонкий клиент), где большинство старых методов вроде ВыбратьИзСписка работают только в синхронном режиме.

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

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

Второй способ — клавиатура: установите курсор в поле и нажмите F4 или Alt + стрелка вниз. Это работает и в управляемых, и в обычных формах. Комбинация удобна при быстром вводе данных, когда руки не покидают клавиатуру.

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

Кнопка со стрелкой видна, список пустСписок не заполнен

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

Кнопки нет вообщеОтключено свойство КнопкаСпискаВыбора

Проверить свойства поля в конфигураторе

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

Использовать F4 или кнопку выбора, а не стрелку

Программное открытие: метод ПоказатьВыборИзСписка

Основной способ открыть список выбора из кода в управляемой форме — метод ПоказатьВыборИзСписка(). Он асинхронный: результат приходит в процедуру, указанную в описании оповещения. Это соответствует модельным требованиям платформы, где модальные вызовы запрещены.

&НаКлиенте

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

Список = Новый СписокЗначений;

Список.Добавить("Наличные", "Наличный расчет");

Список.Добавить("Карта", "Оплата картой");

Оповещение = Новый ОписаниеОповещения("ПослеВыбораВидаОплаты", ЭтотОбъект);

ПоказатьВыборИзСписка(Оповещение, Список, Элементы.ВидОплаты);

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

&НаКлиенте

Процедура ПослеВыбораВидаОплаты(ВыбранныйЭлемент, ДопПараметры) Экспорт

Если ВыбранныйЭлемент <> Неопределено Тогда

ВидОплаты = ВыбранныйЭлемент.Значение;

КонецЕсли;

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

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

Порядок действий
  1. 1
    Сформируйте СписокЗначений с нужными значениями и представлениями
  2. 2
    Создайте ОписаниеОповещения с именем процедуры-обработчика результата
  3. 3
    Вызовите ПоказатьВыборИзСписка, передав оповещение, список и элемент формы
  4. 4
    В процедуре-обработчике проверьте, что пользователь не нажал Esc (результат Неопределено)
  5. 5
    Запишите выбранное значение в реквизит объекта или формы

Открытие списка выбора у поля ввода из обработчика

Когда нужно открыть список в момент начала выбора в поле, используют событие НачалоВыбора. Внутри обработчика стандартную обработку отключают и показывают собственный список — так реализуют динамически формируемые варианты, зависящие от контекста документа.

&НаКлиенте

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

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

Список = ПолучитьДоговорыКонтрагента(Объект.Контрагент);

Оповещение = Новый ОписаниеОповещения("ПослеВыбораДоговора", ЭтотОбъект);

ПоказатьВыборИзСписка(Оповещение, Список, Элемент);

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

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

&НаСервере

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

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

Элементы.СпособДоставки.СписокВыбора.Добавить("Курьер");

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

Открытие формы выбора справочника или документа

Если пользователь должен выбрать не из фиксированного списка, а из объектов базы данных — контрагентов, номенклатуры, документов — открывают форму выбора. Это делается методом ОткрытьФорму() с параметром РежимВыбора:

&НаКлиенте

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

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

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

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

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

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

ПараметрыФормы, Элементы.Товары);

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

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

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

ПоказатьВыборИзСписка

Фиксированный набор значений, сформированный в коде. Не подходит для ссылок с отбором и поиском.

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

Статичные варианты (2–10 значений). Платформа сама рисует выпадающий список, кода минимум.

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

Выбор из справочников и документов с отбором, поиском, динамическим списком. Тяжелее, но функциональнее.

ДанныеВыбора в АвтоПодбор

Подсказка по мере ввода текста в поле. Подходит для больших справочников, не заменяет полный список.

Настройка кнопок и свойств поля ввода

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

Элементы.СпособДоставки.КнопкаСпискаВыбора = Истина;

Элементы.СпособДоставки.РежимВыбораИзСписка = Истина;

Элементы.СпособДоставки.РедактированиеТекста = Ложь;

Свойство РедактированиеТекста = Ложь запрещает ручной ввод — пользователь сможет только выбрать значение из списка. Это надёжный способ исключить опечатки в полях с фиксированным набором вариантов, например «Способ оплаты» или «Статус обращения».

Типичные ошибки и ограничения

Частая ошибка — смешение «списка выбора» и «формы выбора». Если поле ссылается на справочник, стрелка списка выбора покажет только то, что вручную добавлено в СписокВыбора, а не содержимое справочника. Для выбора из базы нужна форма выбора или быстрый выбор (свойство БыстрыйВыбор).

Вторая ошибка — забыть проверить результат оповещения на Неопределено. Если пользователь нажал Esc, обработчик всё равно вызовется, но с пустым значением, и без проверки реквизит будет очищен. Третья — программное заполнение СписокВыбора на клиенте обращением к серверным данным без вызова сервера: на клиенте недоступны запросы и менеджеры объектов.

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

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

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

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

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

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

Открытие списка по кнопке и F4
Норма

Список разворачивается, значения актуальны

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

Список пуст или не открывается

Нажатие Esc
Норма

Значение реквизита не меняется

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

Реквизит очищается

Работа в веб-клиенте
Норма

Список открывается без ошибок

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

Ошибка о модальных/синхронных вызовах

Итог

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

В интерфейсе список выбора открывается стрелкой у поля или клавишей F4. Из кода в управляемых формах применяйте асинхронный ПоказатьВыборИзСписка с описанием оповещения, для выбора объектов базы — ОткрытьФорму с РежимВыбора = Истина. Всегда проверяйте результат на Неопределено и избегайте модальных синхронных методов.

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

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

Установите курсор в поле и нажмите F4 или Alt + стрелка вниз. Перемещение по значениям — стрелками, подтверждение — Enter, отказ — Esc.

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

Стрелка показывает только содержимое свойства СписокВыбора элемента формы, а не сам справочник. Для выбора из справочника используйте кнопку выбора (троеточие), F4 с быстрым выбором или ввод первых букв наименования.

Можно ли открыть список выбора сразу при входе в поле?

Да, в обработчике события «НачалоВыбора» установите СтандартнаяОбработка = Ложь и вызовите ПоказатьВыборИзСписка. Полностью автоматическое открытие при «ПриАктивизации» не предусмотрено платформой и реализуется только через этот обходной путь.

Чем ПоказатьВыборИзСписка отличается от ПоказатьВыборИзМеню?

ПоказатьВыборИзСписка привязывается к элементу формы и возвращает элемент списка значений; ПоказатьВыборИзМеню показывает меню в произвольной позиции и чаще применяется для команд. Для подстановки значения в поле правильнее первый метод.

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

Установите у элемента формы РежимВыбораИзСписка = Истина и РедактированиеТекста = Ложь. Пользователь сможет только выбрать значение, ручной ввод будет заблокирован.

Работает ли ВыбратьИзСписка в тонком клиенте?

Только при разрешённых синхронных вызовах в настройках конфигурации и не в веб-клиенте. Рекомендуемый вариант для управляемых форм — асинхронный ПоказатьВыборИзСписка с описанием оповещения.