При работе с управляемыми формами в платформе «1С:Предприятие 8.3» разработчики часто сталкиваются с ситуацией, когда при получении фокуса (активизации) полем ввода автоматически раскрывается выпадающий список или история последних значений. В некоторых сценариях это мешает пользователям быстро перемещаться по полям с помощью клавиш или мыши. Разберем основные причины такого поведения и способы его отключения.
Автоматическое выпадание списка или формы выбора при получении фокуса элементом формы регулируется несколькими свойствами платформы. Проанализируем ключевые из них:
ИсторияВыбораПриВводе): по умолчанию платформа запоминает ранее введенные значения и показывает их при активизации элемента.БыстрыйВыбор): если это свойство включено у элемента формы или объекта метаданных, платформа автоматически вызывает процедуру выбора при фокусировке мышью.АвтоВыборНезаполненного): если свойство установлено в значение Истина, пустое поле ввода при активизации инициирует выбор из списка или открытие формы выбора.Если автораскрытие выпадающего списка вызвано отображением ранее введенных пользователем значений, необходимо отключить историю выбора.
Рассмотрим пошагово, как это сделать:
ИсторияВыбораПриВводе и установим его значение в НеИспользовать.Обратите внимание: если у реквизита или объекта метаданных это свойство включено, значение Авто на элементе формы продолжит наследовать включенное состояние. Поэтому рекомендуется явно задавать НеИспользовать.
Свойство БыстрыйВыбор также влияет на автоматический вызов списка выбора при клике на элемент мышью.
БыстрыйВыбор и переведем его в значение Ложь.БыстрыйВыбор у соответствующего объекта метаданных (например, справочника). Если там включен быстрый выбор, его также необходимо отключить на уровне объекта или реквизита.Если поле является пустым, платформа может автоматически вызывать выбор. Чтобы предотвратить это поведение, настроим свойство АвтоВыборНезаполненного:
// Программное отключение автовыбора незаполненного реквизита
Элементы.ПолеВводаИмя.АвтоВыборНезаполненного = Ложь;
Для полного контроля над поведением поля ввода можно отключить стандартное открытие выпадающего списка при помощи обработчика события НачалоВыбора.
&НаКлиенте
Процедура ПолеВводаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Отключаем стандартный автоматический вызов списка платформой
СтандартнаяОбработка = Ложь;
КонецПроцедуры
При использовании этого способа выпадающий список или форма выбора не будут открываться автоматически при активизации. Чтобы предоставить пользователю возможность выбора только по клику на кнопку выборки, можно открывать форму выбора или вызывать список программно.