При разработке интерфейсов на платформе 1С:Предприятие мы часто сталкиваемся с поведением полей ввода (ссылочного типа), которое призвано упростить жизнь пользователю, но иногда мешает. Речь идет о механизме "умного ввода", когда при попытке выбрать значение система показывает выпадающий список с историей выбора, вариантами автоподбора и пунктами "Показать все" или "Создать".
Однако в определенных сценариях бизнес-логика требует, чтобы при активации поля сразу открывалась форма выбора справочника или документа, минуя промежуточные меню. Такое улучшение юзабилити в 1С-разработке позволяет минимизировать количество кликов и упростить ввод данных. В некоторых случаях добавление реквизитов и элементов формы на управляемые формы требует тонкой настройки этих параметров для корректного отображения. Разберем подробно, как настроить такое поведение, используя свойства элементов формы и программный код.
Прежде чем что-то отключать, давайте поймем, почему платформа ведет себя именно так. По умолчанию поле ввода ссылочного типа (например, выбор Контрагента) обладает несколькими интерактивными элементами:
Наша задача — убрать "лишние" клики и визуальный шум в виде выпадающего меню "Показать все". Рассмотрим способы решения от простых настроек свойств к программным перехватам.
Самый простой и действенный способ избавиться от выпадающего меню при клике мышью — это правильная настройка палитры свойств самого элемента формы. Если у поля есть кнопка выпадающего списка, платформа будет стараться показать меню.
Давайте изменим свойства элемента формы следующим образом:
КнопкаВыпадающегоСписка (DropListButton) и установим его в значение Нет. Это уберет стрелку вниз, которая провоцирует открытие меню истории.КнопкаВыбора (ChoiceButton) установлено в значение Да. Это обеспечит наличие кнопки с тремя точками.ОтображениеКнопкиВыбора. Рекомендуется установить значение В поле ввода.В результате этих действий визуально у поля останется только кнопка "...", нажатие на которую будет инициировать событие открытия формы выбора, минуя выпадающие списки. Это один из базовых приемов кастомизации интерфейса 1С для отключения лишних элементов. Для интерактивного анализа и изменения подобных свойств без постоянного перезапуска конфигуратора может быть полезен Редактор форм в режиме предприятия — для этого подойдёт Редактор форм в режиме предприятия для 1С.
Часто меню расширяется за счет пункта "Создать" (зеленый плюс). Если пользователю запрещено создавать элементы "на лету" или это просто не нужно в данном контексте, необходимо отключить эту возможность.
В свойствах элемента формы (или реквизита объекта) найдем свойство СозданиеПриВводе (CreateOnInput). У него есть три состояния:
Установим значение Не использовать. Это сократит список опций в выпадающем меню.
Платформа запоминает последние выбранные пользователем значения и подставляет их в выпадающий список (обычно это первые 5-7 записей). Если этот список мешает или вводит в заблуждение, мы можем отключить его формирование для конкретного поля.
Найдем свойство ИсторияВыбораПриВводе (ChoiceHistoryOnInput) у элемента формы. Установим его в значение Не использовать (DontUse). Теперь при наборе текста или клике история предлагаться не будет, что уменьшает вероятность появления промежуточного окна.
Если мы хотим гарантировать, что при нажатии на кнопку выбора (или клавишу F4) откроется именно форма списка, а не какие-либо быстрые подборы, мы можем вмешаться в событие НачалоВыбора (StartChoice).
Хотя настройка кнопок (Способ 1) обычно решает вопрос для мыши, давайте рассмотрим код, который может принудительно изменить логику. Подобные задачи требуют понимания событийной модели управляемых форм 1С.
Однако, стоит быть осторожным. Если мы просто напишем код открытия формы, не отключив стандартную обработку, может произойти накладка событий. Правильный паттерн использования выглядит так:
&НаКлиенте
Процедура КонтрагентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// Если мы хотим полностью переопределить логику и открыть свою форму
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
// Заполняем параметры отбора при необходимости
// ПараметрыФормы.Вставить("Отбор", Новый Структура("ПометкаУдаления", Ложь));
ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
Использование СтандартнаяОбработка = Ложь предотвращает любые попытки платформы показать стандартные меню выбора, если они вызываются через кнопку выбора.
Самая сложная ситуация возникает, когда пользователь не кликает мышкой, а начинает набирать текст в поле. В этот момент срабатывает механизм "Ввод по строке". Если платформа находит несколько вариантов, она показывает выпадающий список. Если вариантов очень много или они не найдены — появляется пункт "Показать все".
Чтобы изменить это поведение глобально для объекта (например, для Справочника), нам нужно обратиться к модулю менеджера этого объекта. Там существует обработчик ОбработкаПолученияДанныхВыбора, который является ключевым элементом глубокого анализа клиент-серверных событий.
Если мы хотим, чтобы при вводе текста автоподбор работал специфическим образом или не работал вовсе, мы можем управлять этим здесь. Например, отключим стандартный полнотекстовый поиск при вводе:
// В модуле менеджера справочника или документа
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Отключаем стандартный механизм поиска платформы
СтандартнаяОбработка = Ложь;
// Здесь мы можем самостоятельно сформировать список значений (ДанныеВыбора)
// Или оставить его пустым, но тогда пользователь ничего не увидит при наборе текста
КонецПроцедуры
Однако, будьте внимательны: полное отключение стандартной обработки при вводе текста (без реализации собственной логики) приведет к тому, что пользователь будет печатать "вслепую", и система не будет реагировать на ввод до нажатия Enter или потери фокуса. Это часто ухудшает юзабилити (удобство использования).
Иногда корень проблемы лежит в настройках самого объекта конфигурации (в дереве метаданных). У справочников есть свойство Быстрый выбор.
Чтобы максимально "обойти" меню "Показать все" и заставить поле работать как простая кнопка вызова справочника, применим комплекс мер:
КнопкаВыпадающегоСписка = Нет.КнопкаВыбора = Да.СозданиеПриВводе = Не использовать.ИсторияВыбораПриВводе = Не использовать.Такая комбинация настроек решает 99% проблем с навязчивым выпадающим меню, сохраняя при этом возможность поиска набором текста. Для реализации сложной динамики и автоматизации подобных правок разработчики нередко используют Конструктор управляемых форм, что особенно актуально при большом количестве реквизитов.