Методика и постановка задачи
Когда в информационной базе много контрагентов, пользователи при заполнении реквизитов форм документов активно используют понравившуюся им функцию «Ввод по строке » Это ускоряет ввод большого объема информации за счет эффективного использования клавиатуры и уменьшения нагрузки на базу. Например, при вводе контрагента в документ "Платежное поручение входящее " (см. рис.1). Данный список появляется при окончании ввода текста в поле ввода - нажатию Enter, Esc, Tab или сходе с элемента управления. По умолчанию система предлагает список с найденными, по первым введенным символам введенного текста, элементами справочника Контрагенты.
Как видно из рисунка, в список выводится Наименование контрагента и в скобках его Код .
Бывают случаи, когда существует очень много контрагентов с одинаковыми наименованиями, то просто невозможно быстро выбрать нужного из списка, так как код в скобках не несет смысловой нагрузки.
Заметим, что ввод по строке возможен не только по Коду и Наименованию , но и по значению ИНН (см. рис.2)
Однако, как показывает практика, ввод по ИНН не получил широкого распространения из-за сравнительно большой длины ИНН и психологического неприятия ввода рутинных операций. По этой причине представляется интересным выводить дополнительно в списке информацию об ИНН контрагента и его адресе, например, юридическом.
Решение
Использование режима "Ввод по строке " может быть перепрограммировано произвольным образом. Написание программного кода осуществляется в обработчиках поля ввода АвтоПодборТекста() и ОкончаниеВводаТекста().
Например, по набору первых символов в поле ввода система автоматически предлагает дополнение вводимого текста до уже существующего значения, если это значение единственное. Для этих целей служит обработчик АвтоПодборТекста().
Для решения нашей задачи — выводить дополнительную информацию в список - подходит только обработчик ОкончаниеВводаТекста() (см. рис.3) поля ввода реквизита Контрагент.
В обработчике сразу укажем, что будем использовать нестандартную обработку:СтандартнаяОбработка = Ложь;
Далее формируем запрос по справочнику, выборку из которого будем использовать для заполнения списка.Если полученных вариантов контрагентов более 50, то выдаем предупреждение. Иначеформируем список значений. Пример программной реализации обработчика для конфигурации Управление торговлей 8.1 релиз 10.3.8.9, продемонстрирован в присоединенном к данной статье файле.
В результате мы получаем решение, приведенное на рис. 4.
Предложения по улучшению приветствуются.
Ставим плюс, если публикация понравилась или разработка пригодилась в работе.