Поиск контрагента по любой подстроке легким способом. УТ 11.4
Клиент пожаловался, что контрагенты подбираются только по началу строки. Я посмотрел, это действительно так:
Хотя для номенклатуры разработчики сделали поиск по любой части полей поиска:
Вопиющая несправедливость!
Конечно, можно просто поменять способ поиска строки. Но конфигурация дорабатывается в основном через расширения. К сожалению, в расширении способ поиска строки изменить нельзя, хотя странно, это поле никак не влияет на данные. Неисповедимы пути 1с!
Поэтому я решил попробовать другой, программный способ, который нашел тут.
Правда, в моем случае речь шла о справочнике Партнеры (это я понял на этапе отладки). Но там тоже поиск только по началу строки.
К моему удивлению, в типовой в модуле менеджера уже имелась процедура ОбработкаПолученияДанныхВыбора:
Я решил исследовать ее в отладчике. Создал заказ и начал выбирать в нем контрагента. И наткнулся на интересное:
Таким образом решение оказалось очень простым — добавить в строку поиска процент в начало, расширяем модуль ПартнерыИКонтрагентыВызовСервера:
&Вместо("ПартнерыДанныеВыбора") Функция дор_ПартнерыДанныеВыбора(Параметры) НачальнаяСтрокаПоиска = Параметры.СтрокаПоиска; //Обманывае поиск Параметры.СтрокаПоиска = "%" + НачальнаяСтрокаПоиска; Результат = ПродолжитьВызов(Параметры); //Возвращаем как было Параметры.СтрокаПоиска = НачальнаяСтрокаПоиска; Возврат Результат; КонецФункции
Обратите внимание — в конце я возвращаю строку «как было», потому что если типовой код ничего не найдет, он вернет все в стандартную обработку и там должна быть нормальная строка, без добавленного процента!
В итоге и не пришлось менять типовой прикладной объект, и использовали типовой код нужным образом, качественно его обманув.
Среда: 11.4.13.46 Объем: 0.5 час.
Свежие комментарии