A1sCode библиотека 1С

A1sQ.LikePattern

Назначение: подготовить безопасный шаблон для оператора ПОДОБНО (SQL LIKE) по сценарию «содержит».
Как именно: возвращает строку вида "%"+EscapeLike(Строка)+"%", где EscapeLike экранирует служебные символы под ESCAPE '~'.

Сигнатура

Function LikePattern(SearchString) Export

Как работает (по исходному коду)

// Исходник A1sQ:
Возврат "%" + EscapeLike(SearchString) + "%";
Экранируемые символы (по EscapeLike): ~ → ~~, % → ~%, _ → ~_, [ → ~[, ] → ~], ^ → ~^. Это набор спецсимволов SQL‑шаблонов, поэтому в запросе используйте ESCAPE '~'.

Параметры

  • SearchString — исходная пользовательская строка, по которой ищем «вхождение».

Возвращает

Строку — готовую маску для ПОДОБНО/LIKE по сценарию «содержит».

Примеры

1) Поиск по наименованию (содержит)

Mask = A1sQ.LikePattern("100% хлопок"); // "%100~% хлопок%"
QT = "
|ВЫБРАТЬ Наименование
|ИЗ Справочник.Номенклатура
|ГДЕ Наименование ПОДОБНО &Mask ESCAPE '~'";
Q  = A1sQ.CreateQ(QT);
Q.УстановитьПараметр("Mask", Mask);
ТЗ = Q.Выполнить().Выгрузить();

2) Начинается/заканчивается на...

// Начинается на: EscapeLike(Строка) + "%"
StartMask = A1sQ.EscapeLike("ABC") + "%";
// Заканчивается на: "%" + EscapeLike(Строка)
EndMask   = "%" + A1sQ.EscapeLike("XYZ");

3) Поиск по коду, игнорируя спецсимволы

Mask = A1sQ.LikePattern("[A]_01");
QT   = "ВЫБРАТЬ Код ИЗ Справочник.Номенклатура ГДЕ Код ПОДОБНО &Mask ESCAPE '~'";
Q    = A1sQ.CreateQ(QT);
Q.УстановитьПараметр("Mask", Mask);
ТЗ   = Q.Выполнить().Выгрузить();

Нюансы и ограничения

✅ Безопасно экранирует символы шаблонов для LIKE/ПОДОБНО
✅ Удобно для «contains» без ручной сборки маски
❗ Не добавляет ключевое слово ESCAPE — пропишите его в WHERE: "... ПОДОБНО &Mask ESCAPE '~'"
❗ Регистрозависимость поиска зависит от СУБД и коллации, а не от LikePattern
❗ Для нескольких слов используйте объединение условий (AND/OR) и несколько масок
  • EscapeLike — «сырой» экранирующий помощник.
  • BuildQ / SetQParams — установка параметров запроса.