подобно в 1с
1с запрос подобно
Оператор ПОДОБНО в запросе проверяет строковые значения из таблиц на подобие шаблону.
Используется следующим образом слева от этого оператора помещается проверяемая строка, а справа шаблон.
После проверки возвращает Истина или Ложь, соответственно активно используется в условиях.
Для создания шаблона используются следующие служебные символы:
- % (процент) - последовательность, содержащая любое количество произвольных символов
- _ (подчеркивание) - один произвольный символ
- […] (в квадратных скобках один или несколько символов) - любой одиночный символ из перечисленных внутри квадратных скобок
Также кроме различных символов можно использовать диапазоны, например a-z(A-z), что означает наличие произвольного символа, входящего в диапазон, включая концы диапазона. - [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов) - любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Остальные символы используются по своему прямому назначению.
Если в качестве символа необходимо передать один из вышеуказанных служебных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.
Причем перед этой последовательностью может располагаться произвольный набор символов.
Процедура ВыбратьДоговорСодержащийВНаименованииТекст(мТекст)
//В запросе будем использовать шаблон вида "%" + мТекст + "%"
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Наименование", "%" + Текст + "%");
Запрос.Текст = "ВЫБРАТЬ
| Договоры.Ссылка,
| Договоры.Владелец
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
|
|ГДЕ
| Договоры.Наименование ПОДОБНО &Наименование";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сообщить("Договоры содержащие в наименование: " + мТекст + " имеют следующие Контрагенты");
Пока Выборка.Следующий() Цикл
Сообщить("Контрагент: " + Выборка.Владелец + "; Договор: " + Выборка.Ссылка
КонецЕсли;
КонецПроцедуры