не пройдена проверка структуры кода отсутствует признак gs1 datamatrix
Структура Datamatrix в системе «Честный знак»
Структура
Для маркировки товаров используется штриховой код GS1 DataMatrix. Он позволяет кодировать идентификационные ключи системы GS1, а также любую дополнительную информацию о товаре (вес, срок годности, номер серии, номер партии, дата изготовления).
С введением обязательной маркировки — формировать, печатать и проверять коды GS1 DataMatrix необходимо уметь практически в каждой организации.
Как правильно сформировать GS1 DataMatrix:
*При формировании используется таблица символов Base64
В соответствии с требованиями GS1 DataMatrix Guideline, в начало получаемой строки кода необходимо добавлять признак символики – ASCII232 (так называемый FNC1).
FNC1 — специальный символ, который указывает, что закодированная последовательность является штрихкодом GS1. В случае отсутствия этого символа технические средства не распознают код правильно и не смогут его корректно обработать.
В конце полей переменной длины необходимо использовать специальные символы GS1 — разделители. Они нужны для того чтобы идентифицировать отдельные блоки штрихкода. В качестве разделителей допустимо использовать либо символ ASCII 29 (GS).
Обращаем ваше внимание, что использовать FNC1 в качестве разделителя — настоятельно не рекомендуется, так как теряется порядок учета полей.
Визуально в подписи DataMatrix кода такие разделители не отображаются.
Важно. Приложение Честный Знак может распознавать различные виды DataMatrix. Даже QR-коды. Тот факт, что код распознался и информация о товаре отобразилась, не является показателем, что DataMatrix сформирован правильно и имеет структуру GS1 DataMatrix.
Оператор ЦРПТ выпустили пояснение, как правильно генерировать коды. Из-за большого числа кодов с ошибками они признали коды без FNC1 валидными, но, все-таки, рекомендуют генерировать GS1 DataMatrix.
К сожалению, достаточно большой процент DataMatrix кодов от субъектов приходит с ошибками.
Когда Коды Маркировки заказаны и сгенерированы. Их можно забрать через API в текстовом виде, в ТХТ как файл с текстом.
DataMatrix: не сканирует или неправильно передаёт данные сканер. 1С и другие программы не принимают просканированный код.
Тему создал для того, чтобы все вопросы связанные со сканированием DataMatrix обсуждать здесь.
Перед тем, как задать вопрос, настоятельно рекомендую ознакомиться с информацией ниже.
Для маркировки товаров используется штриховой код GS1 DataMatrix. Он позволяет кодировать идентификационные ключи системы GS1, а также любую дополнительную информацию о товаре (вес, срок годности, номер серии, номер партии, дата изготовления).
С введением обязательной маркировки — формировать, печатать и проверять коды GS1 DataMatrix необходимо уметь практически в каждой организации.
Как правильно сформировать GS1 DataMatrix:
Аналогично если забираете в ТХТ формате, то никогда, ни при каких обстоятельствах, не следует открывать и сохранять его в excel. В excel есть функция автосохранения. В момент сохранения excel может самым непредсказуемым образом видоизменить ваши коды. Рекомендуем использовать notepad++(блокнот) для просмотра кодов.
При преобразовании перед печатью полученные Коды Маркировки могут приобрести следующий вид:
Третий код — невалидный (у него отсутствуют разделители GS).
Несмотря на то, что при подготовке файла к печати или генерации GS1 DataMatrix, для работы с системой через личный кабинет или API используется оригинальный Код Маркировки содержащий скрытые символы разделители ASCII 29 в виде
Не пройдена проверка структуры кода отсутствует признак gs1 datamatrix
Матричные точечные коды типа Datamatrix используется сейчас достаточно широко в большом количестве отраслей. Часто содержание данных также стандартизировано, поэтому, например, «datamatrix» становится «datamatrix GS1». Хотя оба кода выглядят одинаково, последствия использования неправильного кода могут быть фатальными. Ниже мы объясним разницу между двумя кодами.
Мы создали два шаблона в редакторе макетов: «GS1 Datamatrix» и простой «Datamatrix». Содержание зашифрованных данных одинаково для обоих кодов. Коды неразличимы невооруженным глазом, размер идентичен. Даже с приложением для считывания штрих кодов, которые обычно используются на смартфонах, разницы не видно.
Но профессиональный сканер штрих кода, который используется на производстве или в отделе поступления товаров, очень хорошо распознает разницу. Сканер штрих кода выдает код ошибки, если ожидается «GS1 datamatrix», но на продукте или этикетке нанесен обычный «datamatrix». Наиболее частая ошибка, связанная с этим: «отсутствует признак GS1 datamatrix».
При анализе с помощью тестового прибора разница становится очевидной.
GS1 Datamatrix содержит управляющие символы FNC1
GS1 Datamatrix имеет специальный управляющий символ под названием «FNC1» в начале кода. Этот код виден в строке «Конечный вариант» на картинке ниже.
FNC1 превращает «простой datamatrix» в «GS1 datamatrix»! Символ кодируется в начале и показывает приложению, что содержимое кода структурировано в соответствии со стандартами GS1.
Символ FNC1 также может использоваться внутри кода GS1. Этим символом заканчивается содержание данных идентификаторов приложения, которые имеют переменную длину. Однако в нашем примере, он не применяется, потому что единственный используемый здесь идентификатор приложения переменной длины находится в конце кода. В этом случае контрольный символ FNC1 добавлять не нужно.
GS1 Datamatrix
Datamatrix
Еще одна распространенная ошибка: в обычном тексте идентификаторы данных помещаются в скобки. Эти скобки в коде не кодируются, что видно при сканировании кода сканером:
Появились рекомендации по кодированию и преобразованию кода маркировки
Код маркировки и его признак
Пример кода с выделенными спецсимволами FNC1 и GS
Код маркировки GS1 DataMatrix состоит из нескольких частей, отделенных друг от друга разделителями полей (символами ASCII 29). Каждая часть начинается с идентификатора применения (полный список возможных идентификаторов применения ).
Например, для обувных товаров согласно постановлению правительства об утверждении правил маркировки код маркировки включает в себя 4 группы данных:
Пример кода маркировки для рендеринга в штриховой код DataMatrix: + 01 + GTIN (14 знаков) + 21 + серийный номер (13 знаков) + + 91 + ключ проверки (4 знака) + + 92 + криптоподпись (88 знаков)
Как проверить формат кода
Для проверки кода формата GS1 DataMatrix можно использовать различные приложения и программы, позволяющие проверить код DataMatrix (для Android и для iOs).
Есть также специальные сканеры, поддерживающие вывод идентификаторов типов символов, которые согласно стандарту ISO/IEC 15424 при считывании кода формата GS1 DataMatrix отображают первые три буквы как «]d2». Для обычного DataMatrix первые три символа будут отображаться как «]d1».
Идентификаторы типов символов для DataMatrix согласно стандарту ISO/IEC 15424
Валидный или не валидный код
Как сообщает оператор маркировки, если код DataMatrix сформирован участником маркировки без лидирующего признака FNC1, то данный код также является валидным. Но в то же время, при получении получателем товаров с такими кодами или при продаже на кассе (выводе из оборота) могут возникать технические проблемы с чтением кода без спецсимвола. При считывании кодов маркировки техника и программы, настроенные на проверку правильности кода, могут выдавать ошибки из-за отсутствия обязательного символа FNC1. Поэтому, несмотря на то что код маркировки без спецсимвола является корректным, все же рекомендуется формировать коды DataMatrix по алгоритму, соответствующему спецификации GS1 DataMatrix.
Мы подобрали актуальные программные продукты для адаптации оборудования и учетных систем на платформе 1С к очередной волне маркировки.
Как я понимаю это европейский пример формирования и использования GTIN.
И что интересно что зашивается в него производитель. Таким образом аспирин одного производителя будет иметь отличный GTIN от аспирина другого производителя. Возникает интересный вопрос по такому же принципу будет реализовано это в Честном знаке или же они будут иметь одинаковые GTIN?
Data Matrix, GS1, код маркировки и разделители
Содержание
Формирование GS1 DataMatrix
Цитата из Описания АПИ СУЗ:
Для корректного формирования GS1 DataMatrix необходимо в начало получаемой строки кода маркировки добавлять признак символики – ASCII232, перед конвертацией в DataMatrix, в соответствии с требованиями GS1 General Specification, в противном случае технические средства не распознают код правильно и не смогут его корректно обработать.
Ниже приведены ссылки на спецификации:
Проверка корректности GS1 DataMatrix
Для проверки корректности штрихкода GS1 DataMatrix можно использовать Приложение для проверки кодов маркировки от компании Клеверенс.
Мысли по теме использования и неиспользования стандартов
Скомпилировано со слов Сергея Баженова и скоро будет подвергнуто редакторской правке (по материалам Главного чата маркировки от 2019-07-03)
Возможно я опять выступлю адвокатом дьявола, но действительно, по стандартам GS1 если длина поля фиксирована, то после него никаких разделителей нет. а если длина поля не фиксирована, то обязателен разделитель, кроме случая, когда дальше уже ничего нет. это касается многих кодировок, начиная от EAN-128 и ISO/IEC 15424 и заканчивая DataMatrix когда в сего пишется код GS1. это касается именно данных в штрихкоде. на печать можно выводить скобки или как-то еще изголяться.
Если разрешите я могу рассказать как должно быть и как сделано
Есть грубо три разных мира: как должно быть, как есть на практике вообще и как есть на практике в Маркировке. сразу оговорюсь, что в маркировке всё очень даже неплохо
Как должно быть: есть стандарты GS1, которые никто не читает. Они говорят, грубо, что есть информация, которая может быть зашита в штрихкод. При этом штрихкод — это никакая ни строка текста. Штрихкод — это полоски. То, что написано обычно под штрихкодом называется «человеко-читаемой формой представления» информации, зашитой в штрихкоде (а не самого штрихкода!!). у штрихкода нет никакой строки. никакая строка не соответствует никакому штрихкоду. есть информация, её можно представить в виде строки, а можно в виде штрихкода.
простая аналогия: есть яблоко, есть фото яблока и есть текстовый рассказ о яблоке. попытки получить из строки под штрихкодом сам штрихкод, если читать стандарты, примерно равны получению из рассказа про яблоко фотку этого яблока
Ну тут есть засада про скобки. Далее, есть вот это представление со скобками. Это всего-лишь рекомендованная человеко-читаемая форма представления. И с ней есть проблема, о которой тут только что говорили: порядок полей не определен никаким стандартом. У штрихкода нет двоичной записи. Есть информация, которую хотим закодировать (объект с полями), и есть стандарт как её преобразовать и закодировать. Бинарный формат есть только у EPC
Про то «как должно быть» это по сути всё. Основная сложность состоит в том, что по стандартам основанием для штрихкода служит информация, карточка товара грубо говоря, поля, значения, а никакая не строка. Но этого никто не понимает и использует строку «типа штрихкод», как идентификатор. Как есть: люди пихают в штрихкоды что хотят. Без специальных символов, со специальными символами и т.п. причем и в России и в Европе.
простой пример: есть кодировка CODE-128, которая отвечает за то, какими штрихами какие символы надо кодировать. есть штрихкод EAN-128, который использует кодировку CODE-128 для кодирования данных о товарах, паллетах, поставках и т.п. Он отличается от CODE-128 тем, что в нем должны быть префиксы, разделители, структура есть. CODE-128 ничего не говорит про структуру, только про штрихи. а EAN-128 говорит про структуру как информация должна быть подана но сплошь и рядом на товарах и паллетах можно увидеть: как бы EAN-128 распечатанный при помощи других штрихов, например CODE-39 или используют кодировку CODE-128, кодируют с её помощью строку «(01)12345. » прямо со скобками и думают, что это типа EAN-128 и прочие прелести
Как сделано в маркировке: всё очень неплохо, все стандарты соблюдены, кроме того фиксирован порядок датаайтемов (полей данных) как в самом штрихкоде, так и в строке КМ. Большое везение ребят в том, что они сами генерируют КМ (строковое представление), а не получают его с рынка «как есть»
Скобки не входят в AI, верно. Но AI это про штрихкоды формата GS1. А в DataMatrix можно печатать любую дичь. Нет никакого запрета.
Скобки как символы разрешены в DataMatrix, более того туда можно кодировать например URL, как в QR код.
Вот алфавит из датаматриксов ЦРПТ: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!»»%&’*+-./_,:;=<>?
Если использовать скобки как разделители, то уже нельзя будет без танцев с бубном закодировать скобку в штрихкод. И хотя правила таких танцев давно известны и используются в XML и JSON, служебные символы можно можно экранировать, но это породит свои траблы с тем, что у экранированной строки нет префикса была она экранирована или нет, не надо ли её еще раз разэкранировать. таких багов когда что-то два раза экранировали полно в коде веб-обмена В общем у меня всё
А, нет, сорри. Одно замечание. Как мы боремся с этим адом в своём софте. У нас есть понятие сырых данных и форматированных данных. В отличие от маркировки к нам могут прилететь данные из сторонней системы, со скобками, с любой дичью. в таблице данных это всё льется в таблицу колонку сырых. и есть вычислимая колонка, которая любую дичь приводит к правильному формату