При настройке отчетов или выборок данных в 1С часто возникает задача отобрать контрагентов или товары, чьи наименования начинаются с определенной буквы или диапазона букв (например, от «А» до «Г»). На первый взгляд кажется, что нужно перечислять каждую букву через «ИЛИ», но существуют более элегантные и производительные способы решения этой задачи.
Это самый быстрый и универсальный метод, который отлично работает как в запросах, так и в отборах отчетов СКД. Суть метода заключается в лексикографическом сравнении строк. Поскольку в 1С символы сравниваются по их кодам Unicode, мы можем задать границы диапазона с помощью операторов «Больше или равно» и «Меньше».
Разберем это на примере. Если нам нужно отобрать записи, начинающиеся на буквы от «А» до «Г», мы можем воспользоваться следующим логическим выражением:
Наименование >= "А" И Наименование < "Д"
Почему мы используем «Д» в качестве верхней границы? Все очень просто: условие Наименование < "Д" включает в себя все строки, которые начинаются на «А», «Б», «В», «Г» и любые комбинации символов, идущие до символа «Д». Это позволяет захватить весь диапазон, включая слова, начинающиеся на «Г» (например, «Галка», «Грузоперевозки»), но исключает слова, начинающиеся на «Д».
Преимущества этого подхода:
Наименование.Если вам привычнее работать с шаблонами, можно воспользоваться оператором ПОДОБНО. Этот оператор позволяет использовать специальные символы для поиска соответствий внутри строки.
Рассмотрим структуру шаблона:
Наименование ПОДОБНО "[А-Г]%"
Разберем используемые символы:
[...] — конструкция, определяющая диапазон символов. Внутри скобок мы указываем начальную и конечную точку, например [А-Г]. Система проверит, чтобы первый символ соответствовал любой из букв в этом диапазоне.% — символ, означающий любую последовательность из нуля или более символов, следующих за первой буквой.Обратите внимание: в некоторых версиях платформы или специфических настройках СКД использование квадратных скобок может потребовать проверки. В консоли запросов 1С этот синтаксис работает стабильно и является стандартным для SQL-подобных выражений.
Если задача стоит сделать интерфейс максимально понятным для конечного пользователя, который не хочет вникать в математические сравнения, рекомендуется настроить Вычисляемые поля в схеме компоновки данных (СКД).
ПерваяБуква.ЛЕВО(Наименование, 1).В списке.После такой настройки пользователь сможет просто выбрать нужные буквы из предложенного списка, а система сама отфильтрует справочник. Однако помните, что при работе с очень большими объемами данных (сотни тысяч строк) использование функций в условиях отбора может замедлить формирование отчета, так как СУБД не сможет использовать индекс по полю Наименование.
Проанализировав ситуацию, мы можем сделать следующие выводы:
Наименование >= "НачальнаяБуква" И Наименование < "СледующаяЗаКонечнойБуква".ПОДОБНО с шаблоном "[Нач-Кон]%".СКД создавайте вычисляемые поля с функцией ЛЕВО.Применяйте эти подходы в зависимости от контекста вашей задачи и объема данных, с которыми вы работаете.