Коды Честного Знака «не загружаются»: три причины
Картина знакомая: коды заказаны, файл выгружен, а система отвечает «код с чужим GTIN» или молча загружает ноль. Файл при этом верный. Ниже три причины, которые мы разбирали на живых данных, — и все три выглядят как поломка, а ошибкой не являются.
1. GTIN — это не баркод Wildberries
Внутри кода маркировки лежит (01)GTIN(21)серийный номер. GTIN —
четырнадцатизначный номер, который продавец регистрирует сам в GS1.
Баркод Wildberries — тринадцать цифр, и площадка выдаёт его сама; у товаров
маркетплейса он обычно начинается с 20.
Это разные номера разных систем. Сравнение «в лоб» не совпадёт никогда, и ни один код не привяжется к товару.
Как сравнивать правильно: GTIN приводится к тринадцати знакам (ведущий ноль отбрасывается) и сверяется с тем номером, который продавец зарегистрировал в GS1 для этого товара, а не с баркодом площадки. Если GTIN системе незнаком — это вопрос, а не отказ: у человека надо спросить, чей это товар, и запомнить ответ.
2. Невидимый разделитель режет код на части
В коде маркировки группы отделяются символом GS — 0x1D. Он невидим, но он
есть, и в выгрузках встречается как настоящий символ.
Здесь ловушка для любой программы: в большинстве языков «разбить текст на
строки» считает 0x1D концом строки тоже. Выгрузка с настоящими
разделителями разрезается на куски: первый кусок выглядит как код и даже
загружается — но уже без криптохвоста, то есть не совпадёт с тем, что даст
сканер на складе. Остальные куски падают в «нераспознано».
Лечится явным разбором: строки режутся только по \r\n, \r и \n, а 0x1D
остаётся внутри кода. Заодно стоит принимать записи, где разделитель написан
текстом: , <GS>, ~ — выгрузки бывают разные.
3. Этикетка знает, чей это код, — если её прочитать
На печатной PDF-этикетке Честного Знака самого кода текстом нет: он нарисован Data Matrix. Зато рядом человеческим текстом напечатано описание: «Джинсы Cuore Fiore, цвет голубой, размер 27, состав: 100% хлопок, артикул джинс.03-голубой».
Артикул продавца и размер дают однозначную идентификацию товара — ту же, что в карточке на маркетплейсе. Значит, незнакомый GTIN можно не спрашивать у человека, а опознать по подписи с той же страницы.
Две вещи, на которых здесь легко ошибиться:
- размер обязателен, если он на этикетке есть. Иначе коды от размера 26 привяжутся к размеру 27 — и это тот случай, когда ошибка вскроется только при сканировании на складе;
- длинный артикул переносится на вторую строку. «артикул джинс.2925-» /
«голубой» — это один артикул
джинс.2925-голубой, а не обрезанный. Пока бралась только первая строка, система отклоняла правильные файлы.
Почему на этом нельзя экономить
Код маркировки выдан один раз и за деньги. Наклеенный не на тот товар, он превращается в штраф от площадки, а неполный комплект кодов — в возврат всей поставки: товар без маркировки площадка не примет, а товар, у которого коды есть не на всё, не примет тем более.
Поэтому правильная система здесь не угадывает. Она либо опознаёт товар точно — по коду и подписи на этикетке, — либо спрашивает человека и запоминает ответ.
В EasyCRM коды распознаются прямо с PDF-этикеток, товар определяется по артикулу и размеру с той же страницы, а реестр «Мои КИЗы» показывает, что свободно, что израсходовано и кто печатал.