Параметр «Подобно» в языке запросов 1С:Предприятие — один из самых гибких инструментов для работы со строковыми данными. Он позволяет фильтровать записи по шаблону, используя символы-подстановочные знаки (% и _), а в расширенном режиме — даже регулярные выражения. Однако многие пользователи и разработчики ограничиваются базовыми сценариями, упуская возможности оптимизации запросов или решения нестандартных задач.

В этой статье разберём не только стандартный синтаксис «Подобно», но и малоизвестные фишки: как обойти ограничения на длину шаблона, почему иногда лучше использовать «В» вместо «Подобно», и как с помощью этого параметра искать данные с учётом регистра. Особое внимание уделим совместимости с разными версиями платформы 1С (8.3.20+), где поведение оператора было доработано.

Если вы бухгалтер или аналитик, работающий с отчётами, или разработчик, пишущий сложные выборки — здесь найдёте практические примеры для ваших задач. А если вы только начинаете осваивать запросы в 1С, то раздел с ошибками и типичными заблуждениями поможет избежать подводных камней.

1. Синтаксис параметра «Подобно»: базовые правила

Оператор «Подобно» в запросах 1С используется для сравнения строкового поля с шаблоном. Основные символы:

  • 🔹 % — заменяет любое количество символов (включая ноль). Например, шаблон "Иван%" найдёт "Иван", "Иванов", "Ивановский".
  • 🔹 _ — заменяет ровно один символ. Шаблон "А_а" подойдёт для "Ана", "Аза", но не для "Аня".
  • 🔹 [abc] — любой один символ из списка (например, "[КМ]ирилл" найдёт "Кирилл" и "Мирилл").
  • 🔹 [^abc] — любой один символ, кроме указанных.

Пример базового запроса с «Подобно»:

ВЫБРАТЬ

Контрагенты.Наименование КАК Контрагент

ИЗ

Справочник.Контрагенты КАК Контрагенты

ГДЕ

Контрагенты.Наименование ПОДОБНО "ООО %Альфа%"

Важно: по умолчанию сравнение нечувствительно к регистру. То есть шаблон "иван%" найдёт и "Иван", и "ИВАН", и "иван". Чтобы учитывать регистр, используйте конструкцию «ПОДОБНО РАЗЛИЧАЯ РЕГИСТР» (доступно с версии платформы 8.3.18+).

📊 Как часто вы используете параметр "Подобно" в запросах 1С?
Часто, почти в каждом отчёте
Иногда, для специфических задач
Рядом не стоял, предпочитаю другие методы
Не знаю, что это такое

2. «Подобно» vs «В»: когда что применять

Новички часто путают «Подобно» с оператором «В», который проверяет вхождение подстроки. Разница принципиальная:

  • 🔍 «В» ищет любое вхождение подстроки. Например, ГДЕ Наименование В "Альфа" найдёт и "Альфа-Банк", и "Торговый дом Альфа", и "Бетон-Альфа-Строй".
  • 🎯 «Подобно» работает с шаблоном, где важны позиции символов. Шаблон "Альфа%" не найдёт "Мега-Альфа", зато найдёт "Альфа-Бетта".

Когда использовать «В»:

  • 📌 Нужно найти все записи, содержащие фрагмент (например, "ООО" в наименованиях контрагентов).
  • 📌 Шаблон простой и не требует учёта позиций символов.

Когда «Подобно» эффективнее:

  • 🎭 Нужно искать по началу/концу строки (например, все артикулы, начинающиеся на "ART-").
  • 🔢 Требуется гибкая подстановка символов (например, шаблон "Р___2026" для поиска документов с префиксом "Р" и годом в конце).
💡

Если шаблон для «Подобно» получается слишком сложным (более 10 символов с подстановочными знаками), рассмотрите возможность разбиения условия на несколько простых фильтров с помощью «И»/«ИЛИ». Это ускорит выполнение запроса.

3. Расширенные возможности: регулярные выражения

С версии платформы 1С:Предприятие 8.3.20 в операторе «Подобно» появилась поддержка регулярных выражений (regex). Для этого шаблон должен начинаться с символа ~. Примеры:

ГДЕ Наименование ПОДОБНО "~^[А-Я][а-я]+$"

Этот шаблон найдёт все наименования, начинающиеся с заглавной буквы и состоящие только из кириллицы (например, "Иванов", но не "Иванов123" или "ivanov").

Полезные regex-шаблоны для 1С:

  • 📊 "~^\d{3}-\d{2}$" — поиск строк формата "123-45" (например, номера накладных).
  • 📊 "~[А-Я]{3}\d{6}" — три заглавные буквы + 6 цифр (артикулы, серийные номера).
  • 📊 "~^(?!.[ЙЦУКЕ]).$" — исключение строк, содержащих указанные буквы.

Ограничения regex в 1С:

⚠️ Внимание: Не все возможности стандартных регулярных выражений поддерживаются в 1С. Например, lookbehind-assertions ((?<=...)) могут не работать. Тестируйте шаблоны на реальных данных!
Пример сложного regex для email

ГДЕ КонтактнаяИнформация ПОДОБНО "~^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

Этот шаблон проверяет корректность email-адресов в справочнике контрагентов.

4. Типичные ошибки и как их избежать

Даже опытные разработчики иногда допускают ошибки при работе с «Подобно». Рассмотрим топ-5 заблуждений:

  1. Игнорирование экранирования. Символы %, _, [ в шаблоне нужно экранировать, если они должны восприниматься буквально. Например, чтобы найти строку "100%", шаблон должен быть "100\%".
  2. Перебор с подстановочными знаками. Шаблон "%" вернёт все строки в таблице, что эквивалентно отсутствию фильтра. Это может загрузить сервер при больших объёмах данных.
  3. Неучёт длины строки. Если поле имеет тип Строка(10), а шаблон подразумевает больше символов (например, "%%%%%%%%%%%"), запрос вернёт пустой результат.
  4. Путаница с регистром. В версиях до 8.3.18 оператор всегда игнорировал регистр, что могло приводить к неожиданным совпадениям.
  5. Использование «Подобно» для числовых полей. Оператор работает только со строковыми данными! Для чисел используйте «=», «>», «МЕЖДУ».

Пример ошибочного запроса:

ГДЕ НомерДокумента ПОДОБНО "123%"  // Ошибка: НомерДокумента — числовое поле!

Правильный вариант:

ГДЕ НомерДокумента >= 123000 И НомерДокумента < 124000

Экранированы специальные символы (%_[])

Шаблон не начинается/заканчивается лишними пробелами

Учтён регистр (если важно)

Поле в условии — строкового типа

Тестирование на реальных данных-->

5. Оптимизация запросов с «Подобно»

Неправильное использование «Подобно» может тормозить выполнение запросов, особенно на больших базах. Советы по оптимизации:

1. Избегайте шаблонов, начинающихся с %.

Запрос ГДЕ Наименование ПОДОБНО "%Иван%" вынуждает СУБД сканировать все строки таблицы (table scan). Лучше переписать как:

ГДЕ Наименование ПОДОБНО "Иван%"

Или использовать «В», если ищется вхождение подстроки:

ГДЕ Наименование В "Иван"

2. Разбивайте сложные шаблоны.

Вместо:

ГДЕ Артикул ПОДОБНО "A%123_%"

Лучше:

ГДЕ Артикул ПОДОБНО "A%"

И Артикул ПОДОБНО "%123_%"

3. Используйте индексы.

Если поле, по которому идёт фильтрация «Подобно», не проиндексировано, запрос будет медленным. Проверьте план выполнения запроса в Консоли запросов 1С (клавиша F5).

Шаблон Эффективность Альтернатива
"%Иван%" 🚫 Низкая (полное сканирование) "Иван%" или В "Иван"
"A____" (5 символов) ⚠️ Средняя ДЛИНА(Поле) = 5 И Поле ПОДОБНО "A%"
"~^\d{3}-\d{4}$" ✅ Высокая (regex оптимизирован)
💡

Для ускорения запросов с «Подобно» комбинируйте оператор с другими условиями, сужающими выборку (например, по дате, типу документа или статусу).

6. Практические примеры для бухгалтеров и аналитиков

Разберём реальные кейсы, где «Подобно» экономит время при формировании отчётов.

Пример 1: Поиск контрагентов с некорректными ИНН

Задача: найти контрагентов, у которых ИНН начинается с нулей или содержит недопустимые символы.

ВЫБРАТЬ

Контрагенты.Наименование,

Контрагенты.ИНН

ИЗ

Справочник.Контрагенты КАК Контрагенты

ГДЕ

Контрагенты.ИНН ПОДОБНО "0%" // Начинается с нуля

ИЛИ Контрагенты.ИНН ПОДОБНО "%[^0-9]%" // Содержит не цифры

Пример 2: Анализ номенклатуры по артикулам

Задача: выгрузить товары, артикулы которых соответствуют внутреннему стандарту (например, "TR-" + 6 цифр).

ВЫБРАТЬ

Номенклатура.Наименование,

Номенклатура.Артикул

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

Номенклатура.Артикул ПОДОБНО "TR-______"

И ДЛИНА(Номенклатура.Артикул) = 9

Пример 3: Контроль заполнения реквизитов

Задача: найти документы, где в поле "Комментарий" указано "срочно", но не заполнено поле "Ответственный".

ВЫБРАТЬ

Документы.Номер,

Документы.Дата

ИЗ

Документ.ЗаказПокупателя КАК Документы

ГДЕ

Документы.Комментарий ПОДОБНО "%срочно%"

И Документы.Ответственный = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

💡

Для анализа больших справочников (например, номенклатуры) комбинируйте «Подобно» с виртуальными таблицами. Например, используйте Справочник.Номенклатура.ПоискПоНаименованию для ускорения поиска.

7. Совместимость с разными версиями 1С

Поведение оператора «Подобно» эволюционировало вместе с платформой. Ключевые изменения:

  • 📌 8.2 и ранние 8.3: только базовый синтаксис с % и _, без regex. Регистр всегда игнорировался.
  • 📌 8.3.18+: появилась опция «РАЗЛИЧАЯ РЕГИСТР». Пример:
    ГДЕ Наименование ПОДОБНО РАЗЛИЧАЯ РЕГИСТР "Иван%"
  • 📌 8.3.20+: добавлена поддержка регулярных выражений (шаблоны с ~).
  • 📌 8.3.22+: улучшена обработка Unicode-символов в шаблонах.

Как проверить версию платформы в коде:

Сообщить(Строка(Платформа.Версия()));
⚠️ Внимание: Если вы используете облачную версию 1С (1C:Fresh), некоторые расширенные возможности «Подобно» могут быть ограничены. Уточняйте актуальные ограничения в документации вашего тарифа.

8. Альтернативы «Подобно»: когда стоит выбрать другой подход

Иногда «Подобно» — не лучший выбор. Рассмотрим альтернативы:

1. Функция «НАЙТИ»

Если нужно найти позицию подстроки или проверить её наличие с учётом регистра:

ГДЕ НАЙТИ(Наименование, "Иван") > 0

2. «ПОДСТРОКА» + «СОВПАДАЕТ»

Для проверки начала/конца строки без подстановочных знаков:

ГДЕ ПОДСТРОКА(Артикул, 1, 3) = "ART"

3. Полнотекстовый поиск

Если нужно искать по нескольким словам или с учётом морфологии (например, "дом" = "дома"):

ГДЕ ПОЛНЫЙТЕКСТ(Описание, "строительство дом")

4. Внешние обработки

Для сложных сценариев (например, поиск по звучанию — "Иванов" = "Ивановв") лучше использовать внешние компоненты или Библиотеку стандартных подсистем (БСП).

Задача «Подобно» Альтернатива
Поиск по началу строки "Иван%" ПОДСТРОКА(Поле,1,4)="Иван"
Поиск с учётом регистра ПОДОБНО РАЗЛИЧАЯ РЕГИСТР (8.3.18+) НАЙТИ(Поле, "Иван")
Сложные шаблоны (email, телефоны) ПОДОБНО "~regex" (8.3.20+) Внешняя компонента для regex
💡

Если вам нужна максимальная производительность, тестируйте альтернативные методы на реальных данных. Например, для поиска по началу строки ПОДСТРОКА может работать быстрее, чем «Подобно».

FAQ: Частые вопросы по параметру «Подобно»

Можно ли в одном запросе использовать несколько условий с «Подобно»?

Да, можно комбинировать через «И» или «ИЛИ». Пример:

ГДЕ Наименование ПОДОБНО "Иван%"

И Артикул ПОДОБНО "A____"

Однако слишком много условий с «Подобно» могут замедлить запрос. В таких случаях лучше использовать временные таблицы.

Как экранировать специальные символы в шаблоне?

Используйте обратный слэш \ перед символами %, _, [. Пример:

ГДЕ Описание ПОДОБНО "50\% скидка"

В regex-шаблонах (с ~) экранируйте по правилам регулярных выражений (например, \. для точки).

Почему запрос с «Подобно» работает медленно?

Основные причины:

  • 🐢 Шаблон начинается с % (например, "%Иван%").
  • 🐢 Поле не проиндексировано.
  • 🐢 Слишком общий шаблон (например, "%").

Решения: сузьте условие, добавьте индексы или разбивайте запрос на части.

Можно ли использовать «Подобно» для поиска по датам или числам?

Нет, оператор работает только со строковыми полями. Для дат используйте:

ГДЕ Дата МЕЖДУ &ДатаНачало И &ДатаКонец

Для чисел — стандартные операторы сравнения (=, >, <).

Как искать пустые строки или NULL?

Для пустых строк:

ГДЕ Поле = ""

Для NULL (незаполненных значений):

ГДЕ Поле ЕСТЬ NULL

Оператор «Подобно» с пустым шаблоном ("") работать не будет.