Как в поле ввода 1С настроить выбор по кнопке с треугольником вместо трех точек?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Причина отображения кнопки с троеточием

По умолчанию у элемента формы ПолеВвода свойство КнопкаВыбора находится в значении Авто. В интерфейсе управляемых форм (особенно в режиме совместимости с версией 8.2) платформа при автоопределении отдает приоритет стандартному выбору через троеточие, если для реквизита доступно открытие формы выбора объекта. Даже при включенном флаге РежимВыбораИзСписка кнопка с троеточием продолжает отображаться, пока её явно не отключат.

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

Чтобы в поле ввода отображалась исключительно стрелка выпадающего списка, выполним настройку свойств элемента формы в палитре свойств:

  1. Установим свойство РежимВыбораИзСписка в значение Истина (флажок включен).
  2. Установим свойство КнопкаСпискаВыбора (или КнопкаВыпадающегоСписка) в значение Да.
  3. Обязательно переведем свойство КнопкаВыбора из значения Авто в явное значение Нет. Это действие убирает троеточие.
  4. Если требуется запретить пользователю свободный ввод произвольного текста с клавиатуры, установим свойство РедактированиеТекста в значение Ложь.

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Получаем элемент формы
    ЭлементПоле = Элементы.ИмяПоляВвода;
    
    // Заполняем список выбора
    ЭлементПоле.СписокВыбора.Очистить();
    ЭлементПоле.СписокВыбора.Добавить("Вариант1", "Первый вариант");
    ЭлементПоле.СписокВыбора.Добавить("Вариант2", "Второй вариант");
    ЭлементПоле.СписокВыбора.Добавить("Вариант3", "Третий вариант");
    
    // Программная установка свойств отображения кнопок
    ЭлементПоле.РежимВыбораИзСписка = Истина;
    ЭлементПоле.КнопкаВыпадающегоСписка = Истина;
    ЭлементПоле.КнопкаВыбора = Ложь;
    
КонецПроцедуры

Особенности работы в интерфейсе «Такси» и обычных формах

Разберем различия в поведении платформы в зависимости от режима интерфейса:

  1. Интерфейс «Такси» (8.3): Поле ввода изначально оптимизировано для работы с выпадающими списками. Кнопка стрелки вниз является стандартным элементом, а переход к полному списку («Показать все») интегрирован внутрь самого выпадающего меню.
  2. Режим совместимости с 8.2: Платформа эмулирует старое поведение, из-за чего свойство КнопкаВыбора = Авто упорно оставляет троеточие. Явное переключение в Ложь решает проблему.
  3. Обычные формы (толстый клиент): Для поля ввода достаточно установить флаг КнопкаСпискаВыбора и заполнить коллекцию СписокВыбора, после чего элемент корректно выводит треугольник.

Альтернативный программный способ через ПоказатьВыборИзСписка

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


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

&НаКлиенте
Процедура ПослеВыбораЗначения(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
    
    Если ВыбранныйЭлемент <> Неопределено Тогда
        Объект.РеквизитПоля = ВыбранныйЭлемент.Значение;
    КонецЕсли;
    
КонецПроцедуры

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

← На главную