Поиск по вхождению (ввод в табличную часть, поля ввода в документах и т.п.) в типовых решениях (УТ, КА, ERP)

02.06.25

Разработка - Механизмы типовых конфигураций

В типовых решениях типа УТ, КА, ERP при вводе строк в поля ввода осуществляется поиск по первым символам. С помощью небольшой доработки (делается через расширение) можно организовать поиск по вхождению.

Столкнулся с казалось бы простой задачей - в КА вместо стандартного поиска по первым символам сделать поиск по вхождению подстроки. Конфигурация полностью типовая, все доработки только через расширение. Стал разбираться, в менеджере объекта есть стандартная процедура
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) (см. Синтакс-Помощник)

В менеджере объекта (на примере справочника Контрагенты) такая процедура присутствует, и из нее в свою очередь вызывается еще одна
ПартнерыИКонтрагентыВызовСервера.КонтрагентыДанныеВыбора(Параметры)

в которой реализуется бизнес-логика конкретной конфигурации. В итоге мы получаем список, который инициализирует ДанныеВыбора, которые и видит пользователь, набирая текст.

В коде этой процедуры (и похожих, например, для справочника Номенклатура) есть такая строка:

Запрос.УстановитьПараметр("СтрокаВвода", ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(СтрокаПоиска) + "%");

что подразумевает явный поиск по первым символам. Чтобы не ломать бизнес-логику и не прибегать к инъекциям типа &ИзменениеИКонтроль пришлось сделать таким образом. Заимствуем процедуру модуля менеджера:

&Перед("ОбработкаПолученияДанныхВыбора")
Процедура Расш1_ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

	// поиск по вхождению (не по первым символам)
	Если ЗначениеЗаполнено(Параметры.СтрокаПоиска) Тогда
		Параметры.СтрокаПоиска = "%" + Параметры.СтрокаПоиска;
	КонецЕсли;

КонецПроцедуры

и аккуратно модифицируем вышеназванную процедуру

ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(СтрокаПоиска) так:

&Вместо("СформироватьСтрокуДляПоискаВЗапросе")
Функция Расш1_СформироватьСтрокуДляПоискаВЗапросе(Знач СтрокаПоиска)
	
	// чтобы искать по вхождению (строка переопределеяется в расширении соотвествтующего модуля менеджера) 
	// если в начале строки есть символ "%", значит, мы ее уже модифицировали
	// (можно вписывать в модуле менеджера в начало строки вместо "%" 
	// любой редкий символ или их последовательность)
	Если Лев(СтрокаПоиска, 1) = "%" Тогда
		
		Результат = Сред(СтрокаПоиска, 2);
		Результат = СтрЗаменить(Результат, "~", "~~");
		Результат = СтрЗаменить(Результат, "%", "~%");
		Результат = СтрЗаменить(Результат, "_", "~_");
		Результат = СтрЗаменить(Результат, "[", "~[");
		Результат = СтрЗаменить(Результат, "]", "~]");
		Результат = СтрЗаменить(Результат, "^", "~^");
		Результат = "%" + Результат;
		
	Иначе
		// не изменяли строку в модуле менеджера - выполняется стандартный код типового решения
		Результат = ПродолжитьВызов(СтрокаПоиска);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции

И это все.

поиск по подстроке

См. также

Работа с интерфейсом БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:ERP Бесплатно (free)

В этой статье я расскажу, как в конфигурации 1С:ERP 2.5 при начале работы системы настроить открытие своих нетиповых форм (в том числе и из внешних обработок). Данную методику можно использовать как на тонком клиенте, так и на мобильном или веб-клиенте, а также в мобильном приложении.

12.05.2025    1807    PROSTO-1C    1    

14

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В этой статье расскажу, как можно добавлять свои отборы в типовую обработку формирования заказов по потребностям с минимальными доработками.

27.02.2025    828    PROSTO-1C    1    

6

Механизмы типовых конфигураций HighLoad оптимизация Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

Пример популярной пользовательской настройки плана счетов. К чему это может привести, почему «всё тормозит» и как это поправить.

18.02.2025    3460    pbelousov    10    

6

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    15188    Begemoth80    32    

88
Оставьте свое сообщение