Запрет использования выражений и полей таблиц в операторе ПОДОБНО
При использовании в тексте запроса оператора ПОДОБНО
допустимо использовать только константные строковые литералы или параметры запроса. Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов. Например:
Допустимо:
Реквизит ПОДОБНО "123%"
Недопустимо:
Реквизит ПОДОБНО "123" + "%"
Реквизит ПОДОБНО Таблица.Шаблон
Запросы, в которых управляющие символы шаблона оператора ПОДОБНО
находятся в полях запроса или в вычисляемых выражениях, по-разному интерпретируются на различных СУБД. Запрос, успешно выполняющийся, например, при работе с файловой базой, может возвращать неверные результаты при работе в режиме клиент-сервера. Подобные выражения необходимо переформулировать.
Вместо:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны + "_"
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА");
Необходимо использовать:
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Ссылка
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.СтранаПроисхождения.Наименование ПОДОБНО &ШаблонНазванияСтраны
|");
Запрос.УстановитьПараметр("ШаблонНазванияСтраны", "ЧА_");
Данное требование продиктовано необходимостью переносимости прикладных решений на различные СУБД.
См. также
Экранирование кода
// sonar:ExpressionInLikeOperator:off
// sonar:ExpressionInLikeOperator:on