Регистрозависимый поиск в 1С: марки Честного ЗНАКа, акцизы и серийные номера
В 1С сравнение строк по умолчанию регистронезависимое: AL123456789 и
al123456789 для платформы — одно и то же. Звучит безобидно, пока
не сталкиваешься с марками Честного ЗНАКа, акцизными марками и серийными номерами,
где регистр различает модификации.
В ГИС МТ это два разных значения. В 1С — одно. И когда нужно быстро найти конкретную марку среди тысяч, штатный поиск выдает кучу ложных совпадений: часть марок «слипается» в одну строку, а нужную приходится искать глазами.
Почему в 1С это не настроить
Регистрозависимое сравнение в языке запросов 1С отсутствует: В,
ПОДОБНО, сравнение строк — все регистронезависимо. Обойти это внутри
конфигурации можно только костылями: хранить регистр в отдельном реквизите,
писать обработки, дублировать строки. На практике этим никто не занимается —
и ошибки остаются.
Как решает sku-search
Сервис строит собственный индекс и умеет искать по выбранным полям с учетом регистра.
Настройка — две строки в config.toml:
[search]
case_sensitive_fields = ["id", "art", "barcode", "code"]
case_sensitive_extra_fields = ["brand", "supplier", "serial"]
Теперь поиск напрямую по этим полям различает регистр: AL123456789
и al123456789 — разные записи, и вы точно находите нужную марку.
Важный нюанс: регистрозависимость работает для прямого поиска по полю.
Поиск через общее поле name остается регистронезависимым —
операторы продолжают искать по наименованиям как раньше.
Что это дает
- Марки Честного ЗНАКа. Поиск марки по коду с учетом регистра — без ложных совпадений.
- Акцизные марки. Каждая марка уникальна, регистр входит в идентификатор.
- Серийные номера. Оборудование, где
S/Nчувствителен к регистру. - Артикулы поставщиков. Модификации, которые отличаются только регистром.
Пример
POST /find
{ "items": [ { "art": "AL123456789" } ] }
→ найден товар с артикулом AL123456789
(запись al123456789 не попала в результат)
Тот же сервис параллельно решает вторую половину задачи: поиск по названию с опечатками и словоформами. То есть одна точка поиска для операторов — и точная для марок, и «прощающая» для наименований.
Стоит ли это отдельного сервиса
Формально регистрозависимый поиск — одна настройка. Но чтобы она работала, нужен индекс, в котором поля хранятся с учетом регистра, и быстрый точный поиск по ним. sku-search дает и то и другое в одном бинарнике, вместе с fuzzy-поиском по наименованиям — без Java, Docker и правки конфигурации.