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