Поиск контрагента по любой подстроке легким способом. УТ 11.4

Клиент пожаловался, что контрагенты подбираются только по началу строки. Я посмотрел, это действительно так:

Хотя для номенклатуры разработчики сделали поиск по любой части полей поиска:

Вопиющая несправедливость!

Конечно, можно просто поменять способ поиска строки. Но конфигурация дорабатывается в основном через расширения. К сожалению, в расширении способ поиска строки изменить нельзя, хотя странно, это поле никак не влияет на данные. Неисповедимы пути 1с!

Поэтому я решил попробовать другой, программный способ, который нашел тут.

Правда, в моем случае речь шла о справочнике Партнеры (это я понял на этапе отладки). Но там тоже поиск только по началу строки.

К моему удивлению, в типовой в модуле менеджера уже имелась процедура ОбработкаПолученияДанныхВыбора:

Я решил исследовать ее в отладчике. Создал заказ и начал выбирать в нем контрагента. И наткнулся на интересное:

Таким образом решение оказалось очень простым — добавить в строку поиска процент в начало, расширяем модуль ПартнерыИКонтрагентыВызовСервера:

&Вместо("ПартнерыДанныеВыбора")
Функция дор_ПартнерыДанныеВыбора(Параметры)
	
	НачальнаяСтрокаПоиска = Параметры.СтрокаПоиска;
	//Обманывае поиск
	Параметры.СтрокаПоиска = "%" + НачальнаяСтрокаПоиска; 
	Результат = ПродолжитьВызов(Параметры);
	//Возвращаем как было
	Параметры.СтрокаПоиска = НачальнаяСтрокаПоиска; 
	
	Возврат Результат;
КонецФункции

Обратите внимание — в конце я возвращаю строку «как было», потому что если типовой код ничего не найдет, он вернет все в стандартную обработку и там должна быть нормальная строка, без добавленного процента!

В итоге и не пришлось менять типовой прикладной объект, и использовали типовой код нужным образом, качественно его обманув.

Среда: 11.4.13.46 Объем: 0.5 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *