Что зашито в коде маркировки: разбираем Data Matrix по частям

2026-09-19

Код маркировки выглядит как случайный набор символов, а на деле собран по жёсткому правилу. Если понимать это правило, половина рабочих загадок перестаёт быть загадками: почему код «не читается», почему склад говорит «ваши коды не те» и почему Excel молча испортил файл.

Разбираем по частям — на обычном коде для непищевой группы.

Код маркировки по частямПример кода для обычной товарной группы0104600000000018215OdYSB⟨GS⟩93wY/n01— дальше идёт GTIN — глобальный номер товара, 14 цифрGTIN— один на все экземпляры товара, у каждого своего не бывает21— дальше идёт серийный номерсерийный— обычно 6 знаков, буквы и цифры, регистр важен. УникаленGS— невидимый разделитель, символ 29. Его не видно, но он есть93— дальше идёт код проверкикод проверки— 4 знака, криптографическая часть от «Честного знака»

Блоки и идентификаторы применения

Код собран из блоков. Перед каждым стоит двузначный номер — идентификатор применения, AI. Он сообщает системе, что идёт дальше, и именно поэтому код можно разобрать, не зная заранее его длины.

01 — следом 14 цифр GTIN, глобальный номер товара. Он один на все экземпляры: у миллиона одинаковых бутылок GTIN одинаковый.

21 — следом серийный номер. У большинства групп шесть знаков, буквы и цифры, регистр имеет значение: 5OdYSB и 5odysb — разные коды. Серийный номер уникален, второго такого не выдадут никогда.

93 — код проверки, четыре знака. Это криптографическая часть, её выдаёт «Честный знак» вместе с кодом, и подделать её нельзя. У табака вместо неё два блока: 91 — ключ проверки и 92 — электронная подпись на 44 знака, поэтому табачные коды заметно длиннее.

Невидимый разделитель

Между серийным номером и криптографической частью стоит символ, которого не видно, — GS, group separator, символ с кодом 29. Он нужен потому, что серийный номер переменной длины: без разделителя сканер не понял бы, где он кончился и начался следующий блок.

Этот символ не печатается. В блокноте на его месте пусто или странный значок, при копировании через почту он теряется, а в Excel его нельзя сохранить в принципе — формат xlsx управляющие символы запрещает.

Три записи одного и того же кодаКод идентификации (КИ) — 24 знака0104600000000018215OdYSBПодаётся в документах: ввод в оборот, отчёт о нанесенииКод маркировки (КМ) — 31 знак0104600000000018215OdYSB⟨GS⟩93wY/nЗашит в Data Matrix. Это то, что выдаёт сканерТабачный КМ — до 85 знаков…215OdYSB⟨GS⟩91EE10⟨GS⟩92…44 знака…Вместо 93 два блока: 91 — ключ, 92 — электронная подписьСклад сканирует КМ, а в файле часто лежит КИ — отсюда «коды не совпадают»

Почему один код 24 знака, а другой 31

Это не разные коды, а разные записи одного и того же.

Код идентификации, КИ — 24 знака: 01 + GTIN + 21 + серийный номер. Это то, что подаётся в документах «Честного знака»: ввод в оборот, отчёт о нанесении, вывод из оборота.

Код маркировки, КМ — КИ плюс криптографическая часть, 31 знак. Это то, что физически зашито в Data Matrix и что выдаёт сканер при считывании.

Когда склад или контрагент говорит «ваш список не совпадает с тем, что мы сканируем», причина чаще всего именно здесь: у одной стороны КИ, у другой КМ. Сравнивать их напрямую нельзя — нужно либо обрезать считанный код до первых 24 знаков, либо передавать список в полном виде.

Что ломает Excel

Что происходит с кодом в ExcelБыло — файл от «Честного знака»…215OdYSB⟨GS⟩93wY/n31 знак, разделитель на местеСканер прочитает такой кодСтало — после сохранения в xlsx…215OdYSB24 знака, хвост и разделитель срезаныФормат xlsx символ 29 не хранитExcel не предупреждает — файл просто сохраняется короче, чем был

Самая частая и самая незаметная поломка. Файл открыли в Excel, что-то поправили, сохранили — и разделитель с криптохвостом исчезли. Никакого предупреждения не будет, файл просто станет короче.

Как это выглядит со стороны:

коды в файле короче, чем на этикетке — сохранили в xlsx, хвост срезан;
ведущий ноль GTIN пропал — ячейка осталась в числовом формате, 04600… стало 4600…;
сканер код читает, а система его не находит — сравнивают КМ с КИ;
в ячейке «кракозябры» вида _x001D_ — Excel записал запрещённый символ своим способом.

Правило простое: коды передаются в txt или csv. Excel годится только тогда, когда в нём заведомо лежат КИ без криптографической части — как в выгрузках для документов «Честного знака».

Короткий чеклист

• Перед отправкой открыть файл в блокноте и посмотреть на длину строки: 24 знака — это КИ, 31 — КМ.
• Уточнять у принимающей стороны, что именно ей нужно, а не догадываться.
• Не пересылать коды через мессенджеры и тело письма — только вложением.
• Не «поправлять» файл кодов в Excel, даже если очень надо.
• Помнить, что регистр в серийном номере значащий.

Окно программы MarkPDF: загрузка кодов маркировки и печать этикеток DataMatrix
MarkPDF читает коды в любом виде и печатает Data Matrix целиком — с криптографической частью и разделителем.

Программа разбирает коды сама: понимает и КИ, и КМ, не теряет разделитель и проверяет коды до печати. Коды маркировки выдаются один раз — испорченная этикетка означает потраченный код, а не просто испорченную бумагу.

Скачать MarkPDF — 4 дня бесплатно, без карты. Windows, один файл, установка не нужна.

Попробовать без установки можно в онлайн-версии — печать прямо в браузере, регистрация не нужна.

Разбираться некогда — сделаем за вас: карточка товара в каталоге, заказ кодов, ввод в оборот и готовые наклейки. Посчитать стоимость можно на калькуляторе.

Что дальше. Разобравшись с кодом на единице товара, логично перейти к коробам и паллетам: «Агрегация: короба, паллеты и коды SSCC».

Источники

Состав и порядок блоков задаёт справочник идентификаторов применения GS1. Правила для российской маркировки — в документации «Честного знака».

Правила и перечни меняются: перед подготовкой сверьтесь с действующей редакцией и кодами своей номенклатуры.

Попробовать MarkPDF бесплатно