Использование подобно в запросе 1с 8.3. Подобно в условиях запроса. % — литерал, означающий произвольное количество любых символов

Иногда возникает ситуация, когда в 1С 8.3 или 8.2 нужно сделать выборку, например, из справочника всех элементов, у которых в наименовании имеется слово «глазурь». Или из справочника выбрать всех контрагентов, в фамилии которых встречается слово «Иван». В общем, проверить какое-нибудь строковое значение.

Для этого существует оператор в запросах 1С 8.3 и 8.2 — «Подобно». Используется он, соответственно, в условиях:

Получите 267 видеоуроков по 1С бесплатно:

Как пользоваться шаблонами в запросах 1С?

Чтобы сформировать условие отбора, в качестве параметра нужно передать некий шаблон. Для создания шаблона существуют так называемые служебные символы.

Например, символ «%» допускает любую последовательность произвольных символов:

Существуют и другие специальные символы:

  • % (процент) — допускает любую последовательность произвольных символов;
  • _ (нижнее подчеркивание) — любой один символ;
  • […] – один произвольный символ из перечисленных внутри скобок. Кроме перечисления символов можно использовать диапазоны. Пример: а-о;
  • [^…] – то же самое, что и предыдущее, но наоборот. Знак «^» означает отрицание.

Оператор ПОДОБНО в запросе проверяет строковые значения из таблиц на подобие шаблону.
Используется следующим образом слева от этого оператора помещается проверяемая строка, а справа шаблон.

После проверки возвращает Истина или Ложь, соответственно активно используется в условиях.
Для создания шаблона используются следующие служебные символы:

  • % (процент) - последовательность, содержащая любое количество произвольных символов
  • _ (подчеркивание) - один произвольный символ
  • […] (в квадратных скобках один или несколько символов) - любой одиночный символ из перечисленных внутри квадратных скобок
    Также кроме различных символов можно использовать диапазоны, например a-z(A-z), что означает наличие произвольного символа, входящего в диапазон, включая концы диапазона.
  • [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов) - любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания

Остальные символы используются по своему прямому назначению.
Если в качестве символа необходимо передать один из вышеуказанных служебных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон “%АБВ[абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.
Причем перед этой последовательностью может располагаться произвольный набор символов.

Процедура ВыбратьДоговорСодержащийВНаименованииТекст(мТекст)
//В запросе будем использовать шаблон вида "%" + мТекст + "%" Запрос = Новый Запрос; Запрос.УстановитьПараметр("Наименование", "%" + Текст + "%"); Запрос.Текст = "ВЫБРАТЬ | Договоры.Ссылка, | Договоры.Владелец |ИЗ | Справочник.ДоговорыКонтрагентов КАК Договоры | |ГДЕ | Договоры.Наименование ПОДОБНО &Наименование"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Сообщить("Договоры содержащие в наименование: " + мТекст + " имеют следующие Контрагенты"); Пока Выборка.Следующий() Цикл Сообщить("Контрагент: " + Выборка.Владелец + "; Договор: " + Выборка.Ссылка КонецЕсли; КонецПроцедуры

Рассмотрим назначение и использование условного оператора ПОДОБНО(eng. LIKE) в языке запроса 1С в примерах.

Быстрый переход

Предназначение

Проверить на соответствие строкового значения в запросе указанному шаблону — возвращает значение Булево-типа (ИСТИНА или ЛОЖЬ).

  • Проверка регистро — независима.
  • При запросе используются индексы таблиц — не связано с индексами полнотекстового поиска.
  • Может долго выполнятся при больших таблицах.
  • Строки неограниченной длины следует привести функцией ПОДСТРОКА

Места использования

  • В условиях оператора ГДЕ
  • В условиях конструкции ВЫБОР КОГДА <> ТОГДА «» ИНАЧЕ «» КОНЕЦ
  • В полях выборки (например: Наименование ПОДОБНО &ПараметрПодобно как СтрокаПодходит)

Описание синтаксиса оператора ПОДОБНО

Параметр оператора должен быть строкой: может задаться константой, либо передан как параметр запроса.

Литералы(маски), указанные ниже, допускается использовать совместно и по отдельности.

Точное указание строки

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "1"//Равносильно Ключи.Наименование ="1"

Результат:

% — литерал, означающий произвольное количество любых символов

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "%"

Результат : любые 10 наименований

_ (подчеркивание): литерал, соответствующий одному любому символу

Пример №1:

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_"

Пример №2: начинающиеся на любой символ, затем следует «1», а дальше любые символы

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_1%"

Результат:

(в квадратных скобках один или несколько символов)

  • Каждый литерал, соответствующий одному любому символу — используется как ИЛИ.
    Допустимо указание диапазона, например a-z,0-5, означающее произвольный символ из заданного диапазона

Пример

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "[лз]%"

Результат : 10 начинающихся на «л» или «з»

Пример: начинающиеся на 5,6,7

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "%"

Результат:

[^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)

Равносильно любому символу (_) кроме указанных ()

Пример

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "8.[^012]%"//не включаем 8.0,8.1,8.2

Результат : все начинающиеся на «8.» исключая указанные

СПЕЦСИМВОЛ — команда для указания в запросе зарегистрированных выше символов

В качестве служебного символа допустимо использовать как минимум: #,~,/,\

Пример:

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "#_" СПЕЦСИМВОЛ "#"

Результат:

Применимость в платформах

Неверные параметры ПОДОБНО <>

  • Передается параметр не строкового типа: например число 1 вместо строки «1»
  • Сравнивается поле не строкового типа с верной маской (например ссылка) или при соединении значение не проверяется на ЕстьNUL

Обратите внимание на текст ошибки, где выводится вопрос:

Ключи.Наименование ПОДОБНО <>&L