Добавить в корзинуПозвонить
Найти в Дзене

Как работает подобно в запросе 1с

Конечно, давайте разберемся, как работает оператор ПОДОБНО в языке запросов "1С:Предприятие". Оператор ПОДОБНО используется для сравнения строк на соответствие шаблону. Это мощный инструмент для поиска и фильтрации данных, когда вам нужно найти строки, частично соответствующие определенному тексту или формату. Назначение оператора ПОДОБНО: Оператор ПОДОБНО позволяет задать шаблон поиска и проверить, соответствует ли значение строкового выражения этому шаблону. Он особенно полезен в ситуациях, когда: Синтаксис оператора ПОДОБНО: Оператор ПОДОБНО используется в выражениях ГДЕ и ИМЕЮЩИЕ запроса и имеет следующий синтаксис: Фрагмент кода Выражение ПОДОБНО Шаблон Символы подстановки (Wildcards) в операторе ПОДОБНО: Оператор ПОДОБНО поддерживает следующие символы подстановки: Примеры запросов с использованием оператора ПОДОБНО в "1С": Пример 1: Поиск номенклатуры, начинающейся на "Мон": Фрагмент кода ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Наименование
ИЗ
Справочник.Номенклату

Конечно, давайте разберемся, как работает оператор ПОДОБНО в языке запросов "1С:Предприятие". Оператор ПОДОБНО используется для сравнения строк на соответствие шаблону. Это мощный инструмент для поиска и фильтрации данных, когда вам нужно найти строки, частично соответствующие определенному тексту или формату.

Назначение оператора ПОДОБНО:

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

  • Вы хотите найти строки, начинающиеся, заканчивающиеся или содержащие определенную последовательность символов.
  • Вам нужно найти строки, соответствующие определенному формату (например, номер телефона, артикул, код).
  • Вы хотите выполнить поиск с использованием символов подстановки (wildcards), чтобы задать гибкие условия поиска.

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

Оператор ПОДОБНО используется в выражениях ГДЕ и ИМЕЮЩИЕ запроса и имеет следующий синтаксис:

Фрагмент кода

Выражение ПОДОБНО Шаблон

  • Выражение: Это строковое выражение (поле таблицы, переменная или функция, возвращающая строку), которое нужно проверить на соответствие шаблону.
  • ПОДОБНО: Ключевое слово оператора.
  • Шаблон: Строка, представляющая шаблон, которому должно соответствовать выражение. Шаблон может содержать символы подстановки (wildcards), которые позволяют задать гибкие условия поиска.

Символы подстановки (Wildcards) в операторе ПОДОБНО:

Оператор ПОДОБНО поддерживает следующие символы подстановки:

  1. Символ "%" (Процент):Заменяет любую последовательность символов, включая отсутствие символов.
    Аналог * (звездочка) в поисковых шаблонах многих операционных систем.
    Примеры использования "%":"Строка" ПОДОБНО "С%": Истина (начало строки "С", далее любые символы).
    "Строка" ПОДОБНО "%ка": Истина (окончание строки "ка", перед этим любые символы).
    "Строка" ПОДОБНО "%ро%": Истина (содержит подстроку "ро", до и после могут быть любые символы).
    "Строка" ПОДОБНО "%": Истина (любая строка, так как "%" заменяет любую последовательность символов).
    "Строка" ПОДОБНО "С%": Истина ("Строка" начинается с "С").
    "C" ПОДОБНО "С%": Истина ("C" начинается с "С" и может иметь символы после).
    "Слово" ПОДОБНО "%ово%": Истина ("Слово" содержит "ово").
    "Книга" ПОДОБНО "%ниг%": Истина ("Книга" содержит "ниг").
    "Автомобиль" ПОДОБНО "%мобил%": Истина ("Автомобиль" содержит "мобил").
  2. Символ "_" (Подчеркивание):Заменяет ровно один любой символ.
    Аналог ? (вопросительный знак) в поисковых шаблонах многих операционных систем.
    Примеры использования "_":"Строка" ПОДОБНО "С____а": Истина (начало "С", затем ровно 4 любых символа, затем "а").
    "Слова" ПОДОБНО "Слов_": Истина (начало "Слов", затем ровно 1 любой символ).
    "Дом" ПОДОБНО "___": Истина (ровно 3 любых символа).
    "Кот" ПОДОБНО "К_т": Истина ("К" затем любой символ затем "т").
    "Бок" ПОДОБНО "Б_к": Истина ("Б" затем любой символ затем "к").
    "Сок" ПОДОБНО "С_к": Истина ("С" затем любой символ затем "к").
    "Слон" ПОДОБНО "Сл_н": Истина ("Сл" затем любой символ затем "н").
  3. Набор символов в квадратных скобках "[...]" (Квадратные скобки):Указывает один символ, который должен быть одним из перечисленных в скобках.
    Внутри скобок можно перечислять символы по одному или задавать диапазоны символов.
    Примеры использования "[...]":"Строка" ПОДОБНО "Стр[оуи]ка": Истина (четвертый символ должен быть "о", "у" или "и").
    "С123" ПОДОБНО "С[0-9][0-9][0-9]": Истина (после "С" должны идти ровно 3 цифры от 0 до 9).
    "Буква" ПОДОБНО "[А-Я]уква": Истина (первый символ должен быть заглавной буквой от "А" до "Я").
    "cтрока" ПОДОБНО "[а-я]трока": Истина (первый символ должен быть строчной буквой от "а" до "я").
    "Символ" ПОДОБНО "[АБВГДЕ]имвол": Истина (первый символ должен быть одной из букв А, Б, В, Г, Д, Е).
    "Номер1" ПОДОБНО "Номер[1234567890]": Истина (последний символ должен быть цифрой).
    "БукваА" ПОДОБНО "Буква[А-Я]": Истина (последний символ должна быть заглавной буквой от "А" до "Я").
    "буквая" ПОДОБНО "буква[а-я]": Истина (последний символ должна быть строчной буквой от "а" до "я").
  4. Набор символов в квадратных скобках с символом отрицания "[^...]" (Квадратные скобки с отрицанием):Указывает один символ, который НЕ должен быть одним из перечисленных в скобках.
    Аналогично набору символов в квадратных скобках, внутри скобок можно перечислять символы по одному или задавать диапазоны.
    Примеры использования "[^...]":"Строка" ПОДОБНО "Стр[^аоу]ка": Истина (четвертый символ НЕ должен быть "а", "о" или "у").
    "CDEF" ПОДОБНО "C[^0-9][^0-9][^0-9]": Истина (после "C" должны идти ровно 3 символа, каждый из которых НЕ является цифрой).
    "аишка" ПОДОБНО "[^А-Я]ишка": Истина (первый символ НЕ должен быть заглавной буквой от "А" до "Я").
    "Знак!" ПОДОБНО "Знак[^а-я]": Истина (последний символ НЕ должен быть строчной буквой от "а" до "я").
    "Символ?" ПОДОБНО "Символ[^0123456789]": Истина (последний символ НЕ должен быть цифрой).
    "НомерА" ПОДОБНО "Номер[^1234567890]": Истина (последний символ НЕ должен быть цифрой).
    "Буква1" ПОДОБНО "Буква[^А-Я]": Истина (последний символ НЕ должна быть заглавной буквой от "А" до "Я").
    "букваЯ" ПОДОБНО "буква[^а-я]": Истина (последний символ НЕ должна быть строчной буквой от "а" до "я").
  5. Символ экранирования "" (Обратная косая черта):Используется для экранирования специальных символов (%, _, [, ], ^, \), если нужно искать их как обычные символы в тексте, а не как символы подстановки.
    Чтобы искать сам символ обратной косой черты \, нужно использовать двойную обратную косую черту \\.
    Примеры использования "":"Процент 50%" ПОДОБНО "Процент 50\%": Истина (поиск именно символа "%", а не подстановки).
    "Нижнее_подчеркивание" ПОДОБНО "Нижнее\_подчеркивание": Истина (поиск именно символа "_", а не подстановки).
    "Квадратные [скобки]" ПОДОБНО "Квадратные \[скобки\]": Истина (поиск символов "[" и "]", а не набора символов).
    "Обратная\черта" ПОДОБНО "Обратная\\черта": Истина (поиск именно символа "").

Примеры запросов с использованием оператора ПОДОБНО в "1С":

Пример 1: Поиск номенклатуры, начинающейся на "Мон":

Фрагмент кода

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

Пример 2: Поиск контрагентов, у которых ИНН начинается на "77" (код Москвы) и содержит 10 цифр:

Фрагмент кода

ВЫБРАТЬ
Контрагенты.Ссылка,
Контрагенты.Наименование,
Контрагенты.ИНН
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ИНН ПОДОБНО "77________" // 77 и 8 символов "_"

Пример 3: Поиск документов "Поступление товаров", у которых номер содержит цифры и буквы:

Фрагмент кода

ВЫБРАТЬ
ПоступлениеТоваровУслуг.Ссылка,
ПоступлениеТоваровУслуг.Номер,
ПоступлениеТоваровУслуг.Дата
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
ПоступлениеТоваровУслуг.Номер ПОДОБНО "%[0-9]%" И ПоступлениеТоваровУслуг.Номер ПОДОБНО "%[А-Яа-я]%" // Содержит хотя бы одну цифру и хотя бы одну букву

Пример 4: Поиск сотрудников, у которых фамилия начинается на букву из диапазона "А" - "Г":

Фрагмент кода

ВЫБРАТЬ
Сотрудники.Ссылка,
Сотрудники.Фамилия,
Сотрудники.Имя
ИЗ
Справочник.Сотрудники КАК Сотрудники
ГДЕ
Сотрудники.Фамилия ПОДОБНО "[А-Г]%"

Пример 5: Поиск документов, у которых комментарий содержит символ "%":

Фрагмент кода

ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Номер,
ЗаказПокупателя.Комментарий
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
ЗаказПокупателя.Комментарий ПОДОБНО "%\\%" // Экранирование символа "%"

Производительность и индексы при использовании ПОДОБНО:

  • Использование индексов: Для повышения производительности запросов, особенно на больших объемах данных, важно, чтобы поля, используемые в операторе ПОДОБНО, были проиндексированы. "1С:Предприятие" использует индексы для ускорения поиска данных. Если поле, по которому выполняется поиск с ПОДОБНО, проиндексировано, запрос будет выполняться значительно быстрее, чем при полном переборе данных.
  • Сложность шаблона: Сложность шаблона также влияет на производительность. Более простые шаблоны (например, начинающиеся с символов, а не с %) обычно выполняются быстрее, чем сложные шаблоны с большим количеством символов подстановки и диапазонов.
  • Расположение символов подстановки: Использование символа % в начале шаблона (например, ПОДОБНО "%фраза") может снизить производительность, так как в этом случае индекс может использоваться неэффективно. Если возможно, старайтесь использовать шаблоны, где символы подстановки расположены в конце строки или в середине, а начало строки задано явно.

В заключение:

Оператор ПОДОБНО – это мощный инструмент для гибкого поиска и фильтрации строк в запросах "1С:Предприятие". Понимание символов подстановки и правильное использование оператора ПОДОБНО позволяет создавать эффективные и выразительные запросы для решения разнообразных задач анализа и обработки данных. При использовании ПОДОБНО важно учитывать вопросы производительности и по возможности оптимизировать запросы, используя индексы и не усложняя шаблоны без необходимости.