← Блог · 31 июля 2026
Как достать коды маркировки из лога или выгрузки
Коды маркировки редко приходят аккуратным списком. Обычно они лежат внутри лога принтера или камеры, в выгрузке сканера, в письме от подрядчика — вперемешку со временем, служебными словами и соседними колонками. Задача «получить из этого чистый список кодов» выглядит как работа для поиска по файлу или формулы в Excel, а заканчивается тихо потерянными кодами.
Почему разбор «по колонкам» ломает коды
Алфавит кода маркировки — 82 символа набора GS1 (Таблица 3 документации СУЗ): латиница в обоих регистрах, цифры и пунктуация ! " % & ' ( ) * + , - . / : ; < = > ? _. То есть запятая, точка с запятой и кавычка — законные символы внутри кода.
Отсюда правило: строку выгрузки нельзя резать по разделителю колонок наугад. Вот синтетический пример вполне нормального кода: 0104600000000015215Lm4Np-/:;<=>93Rt5y — в нём есть и ;, и :, и <=>. Разбор «взять первую колонку CSV» обрежет такой код посередине, и никакой ошибки при этом не будет.
Отдельная ловушка — экранирование CSV
Выгрузки сканеров часто кладут код в кавычки. Если кавычка встречается внутри самого кода, по правилам CSV она удваивается. В файле это выглядит так:
"0104600000000015215Gh2Jk"".7890+93Qw3e"
Настоящий код здесь — 0104600000000015215Gh2Jk".7890+93Qw3e, с одной кавычкой. Прочитанный как есть, он содержит лишний символ: длина поля не сходится, код не ложится ни на один шаблон и просто пропадает из результата. На реальной выгрузке, на которой мы проверяли инструмент, в таком виде лежали 949 кодов из 10 572 — почти каждый одиннадцатый.
На что опирается поиск
Опора — жёсткая структура кода, а не «похожесть» строки на код:
- Якорь. Код с GS1 начинается с
01, 14 цифр кода товара и21. Перебирать каждый символ строки незачем — проверка идёт от таких позиций. - Шаблоны. От якоря пробуются все шаблоны справочника «Честного знака» — и в варианте с разделителями групп, и без них.
- Граница важнее длины. Побеждает тот вариант, после которого идёт конец строки или символ вне алфавита кода. Без этого правила шаблон с длинным серийным номером «съел» бы кусок соседнего поля выгрузки.
- Два прочтения строки. Каждая строка читается как есть и как набор полей CSV — по правилам RFC 4180, с удвоенными кавычками и снятием ведущего апострофа, которым Excel помечает «это текст, а не число».
Что показывает инструмент
Поиск кодов маркировки в логах и выгрузках принимает файл лога, CSV или TXT до 8 МБ либо текст, вставленный в поле, и разбирает до 20 000 кодов за раз. В результате видно:
- сколько строк просмотрено и в скольких из них нашлись коды;
- сколько кодов найдено и сколько было повторов — в список берётся первое вхождение;
- сколько кодов уже были с разделителями групп: эти не пострадали;
- сколько пришлось доставать из экранированных полей CSV;
- какая у найденных кодов структура и скольким товарным группам она подходит — по коду товарная группа не определяется, и инструмент этого не скрывает.
Каждая находка показывается вместе с фрагментом исходной строки, чтобы было понятно, откуда она взялась. Готовый список выгружается в TXT в двух видах: с расставленными разделителями групп или ровно так, как коды лежали в тексте.
Коды без GS1
У сигаретных пачек код печатается без GS1-идентификаторов, и его якорь — просто 14 цифр подряд. В логе, где полно длинных чисел, такой якорь даёт ложные находки, поэтому поиск таких кодов включается отдельной галочкой и по умолчанию выключен.
Ни файл, ни найденные коды никуда не сохраняются — разбор идёт в памяти открытой страницы, пока она открыта.
Что делать с полученным списком
Дальше коды обычно надо либо сверить с другой системой, либо загрузить туда, где их ждут в каноническом виде — с разделителями групп. Если разделители в исходном файле были потеряны, соседний инструмент раздела вернёт их и проверит каждый код по справочнику шаблонов: восстановление разделителей. Движок поиска кодов встроен и в него, так что лог или выгрузку можно грузить в любой из двух инструментов.
Причём тут Sensei
Оба инструмента бесплатные, их сделала команда Sensei — сервиса поиска по базе знаний компании: подключаете wiki, документы и таблицы, спрашиваете обычной фразой и получаете ответ с цитатами из своих источников. Как это выглядит, видно в демо на нашей собственной документации.