Как в поле ввода убрать пункт «Показать все» в 1С?

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

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

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

Способ 1. Отключение истории выбора при вводе

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

Для поля ввода предусмотрено свойство ИсторияВыбораПриВводе. Чтобы отключить отображение истории и сопутствующих системных пунктов, выполним следующие действия:

  1. Откроем форму в конфигураторе и перейдем в палитру свойств нужного поля ввода.
  2. Найдем свойство История выбора при вводе (раздел «Использование») и установим значение Не использовать.

Это же действие можно выполнить программно при открытии или создании формы на сервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.ПолеВвода.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
КонецПроцедуры

Способ 2. Настройка строгого режима выбора из списка

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

Разберем необходимые параметры:

  1. Включаем свойство Режим выбора из списка (РежимВыбораИзСписка = Истина).
  2. Отключаем стандартную кнопку выбора, сняв флаг Кнопка выбора (КнопкаВыбора = Ложь).
  3. Отключаем кнопку добавления новых элементов, сняв флаг Кнопка создания (КнопкаСоздания = Ложь).
  4. Заполняем коллекцию СписокВыбора необходимыми значениями.

Посмотрим на пример программной инициализации такого поля:


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

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

Способ 3. Изменение отображения кнопки выбора

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

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

  1. В палитре свойств поля найдем пункт Отображение кнопки выбора.
  2. Установим значение В поле ввода.

В результате кнопка с троеточием вернется в само поле ввода, а из выпадающего меню исчезнет строка «Показать все».

Способ 4. Программный перехват событий выбора

Рассмотрим ситуацию, когда пользователь может вызвать форму выбора горячей клавишей (например, F4) или через автоподбор по строке. Для гарантированной блокировки стандартной формы списка используем обработчики событий.

В модуле формы переопределим процедуру НачалоВыбора:


&НаКлиенте
Процедура ПолеВводаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Отменяем открытие стандартной формы списка
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

Если список формируется динамически непосредственно перед раскрытием, подключим обработчик ПриНачалеВыбораИзСписка:


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

Для ссылочных типов данных (справочники, документы) также можно переопределить генерацию выпадающих подсказок в модуле менеджера объекта через процедуру ОбработкаПолученияДанныхВыбора, установив параметр СтандартнаяОбработка = Ложь и заполнив параметр ДанныеВыбора собственными значениями.

← На главную