Самое неприятное по такой ошибке, что информация о ней видна только в журнале регистрации как результат выполнения регламентных заданий. У фоновых заданий с такой ошибкой будет статус “завершено с ошибкой”. Нет информации, на какой строке какого общего модуля возникает эта ошибка.
Текст ошибка обычно выглядит так: Ошибка СУБД: 2201B: ERROR: invalid regular expression: invalid character range
Причины ошибки invalid regular expression: invalid character range
Ошибка возникает при попытке выполнить запрос с условием ПОДОБНО в ситуации, когда в переданном параметре есть специальные символы.
Запрещены следующие символы:
[
]
_
%
^
Как избежать ошибки выполнения регулярных выражений
Необходимо экранировать специальные символы, если их все-таки нужно использовать в поиске как обычные символы текста, а не как команды для особых условий поиска.
- Сначала нужно выбрать символ экранирования. Например, такой: ~
- Если этого не сделать и передать строку с этими специальными символами в параметр с выражением ПОДОБНО с запросе, то возникнет ошибка с текстом Ошибка СУБД: 2201B: ERROR: invalid regular expression: invalid character range и фоновое задание будет аварийно завершено.
- Код для замены символов может выглядеть следующим образом:
Результат = СтрЗаменить(Результат, "~", "~~");
Результат = СтрЗаменить(Результат, "%", "~%");
Результат = СтрЗаменить(Результат, "_", "~_");
Результат = СтрЗаменить(Результат, "[", "~[");
Результат = СтрЗаменить(Результат, "]", "~]");
Результат = СтрЗаменить(Результат, "^", "~^"); -
А к выражению ПОДОБНО в тексте запроса нужно добавить строку с указанием выбранного специального символа. Выглядеть она может следующим образом:
И ЭлектронноеПисьмоВходящее.Текст ПОДОБНО &Текст СПЕЦСИМВОЛ ""~""