ПОДОБНО в запросах
Условие на ПОДОБНО в запросе очень страшная штука!👻 Она удобно находит все что мы хотим, но может положить все чего мы бы не хотели)
Проблемы с которыми сталкивался лично:
🔸 1. Из-за того, что в шаблоне поиска в начале стоял "%" (любое количество любых символов), этот запрос отрабатывал кратно дольше, хотя смысла в этом не было, так как кто-то по умолчанию воткнул "%" и в начале и в конце...🤦♂️
🔸 2. Ошибка "ERROR: invalid regular expression: invalid character range (PostgreSQL)", из-за наличия спецсимволов в строке и без их экранирования.
Решение:
#std726
...
При этом нужно иметь в виду, что установка параметров запроса с помощью Запрос.УстановитьПараметр не экранирует спецсимволы шаблона для ПОДОБНО. Для экранирования спецсимволов в конфигурациях с Библиотекой стандартных подсистем (БСП) рекомендуется вызывать процедуру ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе.
Правильно:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Наименование ПОДОБНО &Шаблон СПЕЦСИМВОЛ "~"
…
Запрос.УстановитьПараметр("Шаблон", "%" + ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(ИскомыйТекст) + "%");
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std726