gifts2017

Вывод дополнительной информации - ИНН и адреса контрагента - в список значений при вводе по строке

Опубликовал Иван Плющев (its) в раздел Программирование - Практика программирования

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

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

Хотя возможен ввод по ИНН, но он не получил широкого распространения из-за сравнительно большой длины ИНН и психологического неприятия ввода рутинных операций. По этой причине представляется интересным решение, позволяющее выводить дополнительно в списке информацию об ИНН контрагента и его адресе.

Пример программной реализации обработчика для конфигурации Управление торговлей 8.1 релиз 10.3.8.9, продемонстрирован в присоединенном к данной статье файле.

 

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

Предложения по улучшению приветствуются.

Ставим плюс, если публикация понравилась или разработка пригодилась в работе.

Скачать файлы

Наименование Файл Версия Размер
- 127
.txt 1,67Kb
07.12.09
127
.txt 1,67Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

3. Serj (Serj1C) 07.12.09 07:51
Статья понравилась. Впринципе можно ведь и вооб по строке делать не полько на началу наименования, но и по подстроке
(вместо ООО "Ромашка", набирать просто Ромаш...)
Запрос.УстановитьПараметр("Шаблон", "%" + Текст + "%");
5. Иван Плющев (its) 07.12.09 09:20
(3) Согласен. Можно. Однако! Тогда в выборку войдет больше вариантов. Например, при поиске по слову "свет", попадутся дополнительно: "Горсвет", "Пересвет", "Рассвет" и т.д. А стОит ли? Обрадуются ли пользователи такому результату? :o

(4) Понятно. Тогда обработчик должен стделать тоже самое, что сделали разрботчики Punto Switcher: получить миллион невозможных буквенных комбинаций для каждого языка (русский и английский), где-то их хранить в конфигурации и нагрузить учетную систему выполнением несвойственных ей функций. Хотя это можно поручить самой платформе 1С или оформить в виде отдельной dll. Но будет ли это работать быстрее и эффективнее, чем у Punto Switcher? Насколько это востребовано? А смысл? Ведь всё уже придумано до нас. :)
8. Elena Runeva (Ranetka) 09.12.09 10:33
(5) Символ "*" в начале строки означает любое количество любых символов. Нет "*" - искать стандартным образом с первого символа, есть - искать по вхождению.
9. ediks (ediks) 22.08.11 15:32
(0) Судя по тексту запроса ввод кода контрагента уже не сработает. Может стоит добавить еще что-нибудь типа "ИЛИ Контрагент.Код Подобно &Шаблон"?
10. esoldatov 20.05.12 18:46
Отличная разработка, весь интернет изрыл пытаясь найти подобный пример, сейчас скачаю и отпишусь
11. esoldatov 20.05.12 18:57
Отличный пример, скачал, проверил, работает на ура, от себя добавил различные вариации, для нетиповой УТ, в целом получается отличный код...

Скорость работы отменная, проверено на справочнике с более 50000 позициями
12. Иван Плющев (its) 20.05.12 22:49
13. Иван Плющев (its) 27.03.15 16:07
(8) Ranetka,
В данной программной реализации механизма ввода по строке символ * (звездочка) не поддерживается. :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа