Шаблоны штрихкодов
Штрихкод (далее ШК) — это, прежде всего, средство автоматизации обработки данных. В свою очередь, они могут быть очень разными. Для шифрования одних может при этом лучше всего подходить один тип штрихкода, а для других — совсем иной.
Штрихкод представлен в виде графического изображения (как правило, представляющее собой сочетание черных и белых полос или похожих на них графических элементов), в котором в соответствии с те м или иным стандартом кодируются текстовые или числовые данные.
Штрихкоды используются для идентификации любых объектов учета. Они содержат информацию, которая помогает определить принадлежность товара к какой-либо категории, заданной пользователем (производителем).
Штрихкоды в торговле позволяют быстрее идентифицировать товар и рассчитать покупателя. Штрихкоды на складе также позволяют быстрее идентифицировать товар или даже правильно распознать дополнительные характеристики (если они указаны в штрихкоде).
Если на товаре нет штрихкода, с которого зашифрованные в нем данные считываются автоматически, то соответствующие данные подлежат обработке человеком вручную.
Существует большое количество различных типов штрихкодов, это объясняется разными требованиями разных бизнесов, т. е. областью применения.
Какие бывают кодировки ШК
Штрихкоды принято разделять по типу изображения на:
Линейные коды имеют вид горизонтального ряда вертикально расположенных линий, в которых закодированы определенный набор символов. Шифрование довольно простое, но его достаточно для идентификации каждой единицы товара даже в гипермаркете.
Основными стандартами линейных ШК являются: UPC/EAN-128, EAN-13, UPC-E, Code39, UPC-A, EAN-8.
Среди всех перечисленных стандартов наибольшую популярность получили первые два. Именно их можно увидеть на большинстве товаров в супермаркетах.
Линейные штрихкоды
EAN-13
Один из самых распространенных, т.к. он присутствует на всех продовольственных товарах. Аббревиатура EAN означает Европейский Номер Артикула (European Article Number).
Код EAN имеет свою историю, и это не самый первый код для товаров, который был придуман. Самым первым кодом для товаров, который получил большое распространение, был код UPC. UPC — Универсальный Код Продукта (Universal Product Code), но подходит для использования только в США и Канаде.
Когда «моду на штрихкод» решили перенять в Европе, встала проблема: какой код использовать, ведь UPC уже занят американскими и канадскими компаниями. В оригинальном UPC было 12 цифр, из которых одна — тоже чексумма, т. е. реально полезных только 11, которыми можно закодировать 1011 = десять миллиардов товаров.
Для выхода из ситуации было придумано решение — добавить одну лишнюю цифру, ничего при этом реально к штрихкоду не добавляя.
Поэтому при создании кода EAN13 решено было кодировать дополнительную 13ю цифру ничем иным, как чехардой кодировки первой (левой) группы цифр кода UPC. Если все цифры первой группы имеют обычную кодировку, как в оригинальном коде UPC, то 13я считается равной «0». А для того, чтобы закодировать «1», «2» и т. п. предусмотрена таблица замены обычной кодировки для отдельных цифр в первой группе на зеркальную инвертированную — это будет уже «неправильный» код UPC, и оригинальный американский сканер (вымерший) его бы не прочел.
EAN13 уникален тем, что он имеет, кроме собственного формата (словаря), еще и собственный алфавит. Кроме EAN13 похожим алфавитом пользуется только EAN8. Т. е., если кто-то говорит «EAN13», он сразу как бы говорит и о системе кодирования, и о формате, и о том, как это выглядит:
Пример кода EAN13
Итак, код состоит из двух групп штрихов, ограниченных разделителями «||». EAN13 позволяет закодировать 12 значимых цифр. Последняя цифра кода — чексумма, всегда вычисляется по определенной формуле из важных 12-ти и используется следующим образом: сканер восстанавливает из штрихов все 13 цифр, а из первых 12ти считает чексумму. Если чексумма и 13я цифра совпали — код считан верно.
Если сканер неверно прочтет какие-то цифры внутри кода, но верно прочтет чексумму (например, ему «покажется», что вместо «2457852111114» на коробке написано «2417852111114»), то можно будет вычислить чексумму для первых 12-ти прочтенных цифр и увидеть, что она не совпадает с 13-й прочтенной цифрой, а должна (в данном случае чексуммой кода «241785211111» является не «4», а «8», т. е. сканер тогда уж должен был бы прочесть «2417852111118», а не «2417852111114»), что и позволяет поймать ошибку.
Если же сканер верно прочел первые 12 цифр, но неверно прочел чексумму, то она опять не совпадет с вычисленной, и верить такому коду (или сканеру) тоже нельзя.
Как видно, код страны состоит из 3х цифр:
000-119 — США и Канада
400-440 — Германия
460-469 — Россия
Поскольку любой код, начинающийся с 0 или 1, — это США или Канада, то для их собственных товаров цифры EAN13 распределяются иначе: первая цифра — 0 или 1, следующие 6 — производитель, а оставшиеся 5 — код товара. Например «0|049000|…» — Сoca-Cola Corporation. Некоторым компаниям не хватает цифр для нумерации всех своих товаров, и тогда им выдается по много номеров производителя сразу.
Обратите внимание. В общем случае в коде EAN13 не хранится информации о цвете, размере или других характеристиках конкретной единицы товара.
GTIN
Существует довольно много кодировок товаров, т. е. способов назначить им номера. Помимо EAN13 и другие для продовольственных товаров, ISBN для книг и т. д. Всё это различные способы сделать одно и то же — выдать единице товара уникальный номер.
GTIN (Global Trade Item Number) — это глобальный код товара в самом общем смысле. Единое обозначение требуется во множестве приложений — например для прайс-листов или в маркировке грузов.
Чтобы получить GTIN, конкретный код с упаковки товара дополняется лидирующими нулями до 14 цифр. Если мы пользуемся EAN13, то GTIN будет равен «0|EAN13"(т.е. «0» и следом EAN13), а если мы пользуемся EAN8, то GTIN будет равен «000000|EAN8», ну и точно так же с другими кодами товара. Предполагается, что кодов товара длиннее 14 цифр не встречается.
EAN-128
EAN128 предназначен для передачи данных о грузе между компаниями.
Обратите внимание. В коде EAN128 хранятся данные только о весе и габаритах конкретного контейнера или груза с товаром, но нет данных о цвете.
Для построения штрихкода используется алфавит CODE128. Число 128 в EAN128 не означет, что в нем подряд должно стоять 128 цифр. Число 128 попало в EAN128 из CODE128, а в CODE128 оно обозначает количество символов, которое способен отобразить данный алфавит, т. е. все 128 символов стандартно го ASCII.
Группы цифр в скобках под кодом, такие как (02), (15), (3303) и т. д., называются AI (Application Identifiers — коды применения) и объясняют как интерпретировать цифры, идущие следом. Например, AI с кодом 15 задает последний срок, когда товар еще можно продавать, в формате «2 цифры года, 2 цифры номера месяца, 2 цифры дня» (т.е. ггММдд). A, например, AI с кодом 330y задает вес груза (паллеты или контейнера) в килограммах, используя также 6 цифр, при этом «y» должен быть заменен на число десятичных знаков в интерпретации этих 6 цифр. Все эти вещи определены стандартом на EAN128.
Cписок идентификаторов EAN128
| AI | Описание по-английски | Описание по-русски | Формат |
| 00 | Serial Shipping Container Code (SSCC-18) | Уникальный код большого контейнера в формате SSCC-18 | 18 цифр |
| 01 | Shipping Contained Code (SSCC-14) | Код малого контейнера в формате SSCC-14 | 14 цифр |
| 02 | Number of containers contained in another unit (used with AI 37) | GTIN единицы груза, для которого в AI37 указано сколько таких единиц находится в контейнере | 14 Digits |
| 10 | Batch Numbers | Номер партии (поставки) | от 1 до 20 буквы/цифры |
| 11 | Production Date | Дата производства | ГГММДД (две цифры года, две месяца и две дня) |
| 13 | Packaging Date | Дата упаковки | ГГММДД |
| 15 | Sell By Date (Quality Control) | Желательно продать до даты | ГГММДД |
| 17 | Expiration Date (Safety Control) | Срок годности | ГГММДД |
| 20 | Product Variant | Подваринт товара (дополнительно к GTIN) | 2 цифры |
| 21 | Serial Number | Серийный номер | от 1 до 20 буквы/цифры |
| 22 | HIBCC Quantity, Date, Batch and Link | Специальное поле индустрии здравоохранения: количество, дата, партия и чексумма поля | от 1 до 29 буквы/цифры |
| 235 | Lot Number | Номер лота | от 1 до 28 буквы/цифры |
| 240 | Additional Product Identification | Дополнительное поле для более точной идентификации продукта | от 1 до 30 буквы/цифры |
| 250 | Second Serial Number | Второй серийный номер | от 1 до 30 буквы/цифры |
| 310y | Product Net Weight in Kg | Вес нетто товара в кг | 6 цифр |
| 311y | Product Length/1st Dimension (Meters) | Длина (высота, любой 1й размер) товара в метрах | 6 цифр |
| 312y | Product Width/Diameter/2nd Dimension (Meters) | Ширина (диаметр, любой 2й размер) товара в метрах | 6 цифр |
| 313y | Product Depth/Thickness/3rd Dimension (Meters) | Глубина (толщина, любой 3й размер) товара в метрах | 6 цифр |
| 314y | Product Area (Square Meters) | Площадь товара в м.кв. | 6 цифр |
| 315y | Product Volume (Liters) | Объем товара в литрах | 6 цифр |
| 316y | Product Volume (Cubic Meters) | Объем товара в кубических метрах | 6 цифр |
| 320y | Product Net Weight (Pounds) | Вес нетто товара в фунтах | 6 цифр |
| 321y | Product Length/1st Dimension (Inches) | Длина (высота, любой 1й размер) товара в дюймах | 6 цифр |
| 322y | Product Length/1st Dimension (Feet) | Длина (высота, любой 1й размер) товара в футах | 6 цифр |
| 323y | Product Length/1st Dimension in (Yards) | Длина (высота, любой 1й размер) товара в ярдах | 6 цифр |
| 324y | Product Width/Diamater/2nd Dimension (Inches) | Ширина (диаметр, любой 2й размер) товара в дюймах | 6 цифр |
| 325y | Product Width/Diameter/2nd Dimension (Feet) | Ширина (диаметр, любой 2й размер) товара в футах | 6 цифр |
| 326y | Product Width/Diameter/2nd Dimension (Yards) | Ширина (диаметр, любой 2й размер) товара в ярдах | 6 цифр |
| 327y | Product Depth/Thickness/Height/3rd Dimension (Inches) | Глубина (толщина, любой 3й размер) товара в дюймах | 6 цифр |
| 328y | Product Depth/Thickness/Height/3rd Dimension (Feet) | Глубина (толщина, любой 3й размер) товара в футах | 6 цифр |
| 329y | Product Depth/Thickness/Height/3rd Dimension (Yards) | Глубина (толщина, любой 3й размер) товара в ярдах | 6 цифр |
| 330y | Container Gross Weight (Kg) | Вес брутто контейнера в кг | 6 цифр |
| 331y | Container Length/1st Dimension (Meters) | Длина (высота) контейнера в метрах | 6 цифр |
| 332y | Container Width/Diameter/2nd Dimension (Meters) | Ширина (диаметр) контейнера в метрах | 6 цифр |
| 333y | Container Depth/Thickness/3rd Dimension (Meters) | Глубина (высота, толщина) контейнера в метрах | 6 цифр |
| 334y | Container Area (Square Meters) | Площадь контейнера в кв.м. | 6 цифр |
| 335y | Container Gross Volume (Liters) | Общий объем контейнера в литрах | 6 цифр |
| 336y | Container Gross Volume (Cubic Meters) | Общий объем контейнера в кубических метрах | 6 цифр |
| 340y | Container Gross Weight (Pounds) | Общий вес контейнера в фунтах | 6 цифр |
| … | … | … | … |
| 37 | Number of Units Contained (Used with AI 02) | Количество единиц товара в контейнере | о т 1й до 8ми цифр |
| 400 | Customer Purchase Order Numberrchase Order Number | Соответствующий номер заказа | от 1 до 29 буквы/цифры |
| 410 | Ship To/Deliver To Location Code (EAN13 or DUNS code) | Куда доставить в виде кода EAN13 или DUNS | 13 цифр |
| 411 | Bill To/Invoice Location Code (EAN13 or DUNS code) | Куда доставить счет в виде кода EAN13 или DUNS | 13 цифр |
| 412 | Purchase From Location Code (EAN13 or DUNS code) | Где было куплено в виде кода EAN13 или DUNS | 13 цифр |
| 420 | Ship To/Deliver To Postal Code (Single Postal Authority) | Почтовый индекс доставки | от 4 до 12 цифр |
| 8001 | Roll Products — Width/Length/Core Diameterять счет на оплату | Длина, ширина или диаметр центрального ролика для товаров в рулонах | 14 цифр |
| 8002 | Electronic Serial Number (ESN) for Cellular Phone или | ESN мобильного телефона, если груз — мобильный телефон | от 1 до 20 цифр |
| 8003 | GTIN and Serial Number of Returnable Asset | GTIN и серийный номер той части груза, которую после доставки требуется вернуть назад (упаковка, документы). | 14 цифр GTIN + от 1 до 16 буквы/цифры |
| 8004 | UPC/EAN Serial Identification | ||
| 8005 | Price per Unit of Measure | Цена за единицу | 6 цифр |
| 90 | Mutually Agreed Between Trading Partners | Может использов аться по договоренности между поставщиком, экспедитором и покупателем | от 1 до 30 буквы/цифры |
| 91 | Internal Company Codes | Для внутреннего использования | от 1 до 30 буквы/цифры |
| … | … | … | … |
| 99 | Internal Company Codes | Для внутреннего использования | от 1 до 30 буквы/цифры |
«y» — цифра, обозначающая точность после запятой. Например, AI 330y = 3304 будет означать, что в шести цифрах веса четыре их них будут стоять после запятой и «(3304)123456» будет равно 12,3456 кг.
Двумерные штрихкоды
Для маркировки товаров используется штрихкод GS1 DataMatrix. Он позволяет кодировать идентификационные ключи системы GS1, а также любую дополнительную информацию о товаре (вес, срок годности, номер серии, номер партии, дата изготовления).
Обратите внимание. С введением в РФ обязательной маркировки — формировать, печатать и проверять коды GS1 DataMatrix должна научиться практически каждая организация.
ASCII 232 (FNC1); (01) Код продукта (он же GTIN); (17) Серийный номер; разделители групп данных ASCII 29 (GS) или ASCII 232 (FNC1); (10) Срок годности
В соответствии с требованиями GS1 DataMatrix Guideline, в начало получаемой строки кода необходимо добавлять признак символики — ASCII232 (так называемый FNC1). FNC1 — специальный символ, который указывает, что закодированная последовательность является штрихкодом GS1. В случае отсутствия этого символа технические средства не распознают код правильно и не смогут его корректно обработать.
В конце полей переменной длины необходимо использовать специальные символы GS1 — разделители. Они нужны для того чтобы идентифицировать отдельные блоки штрихкода. В качестве разделителей допустимо использовать либо символ ASCII 29 (GS), либо тот же FNC1. Визуально в подписи к ШК такие разделители не отображаются.
Основные ошибки, которые допускаются при формировании DataMatrix:
- в начале не вставлен FNC1 (один специальный символ);
- вместо спецсимвола FNC1 в начале вставлен текст «FNC1» (4 символа);
- вместо спецсимвола FNC1 в начале вставлен GS (в начале должен быть FNC1 !!!);
- не вставлены разделители групп данных после полей переменной длины (например, после серийного номера);
- разделители групп данных вставлены не туда, где они должны быть (например, после поля (01) GTIN, которое имеет фиксированную длину и не требует в конце разделителя);
- вместо спецсимвола GS вставлен текст «GS»;
- используются программы или алгоритмы для печати, которые непоправимо искажают информацию (например, удаляют из кода символы, которые они считают лишними. Зачастую это арифметические символы, скобки и т.п.).
Пути решения возможных ошибок указаны в FAQ, раздел «Возможные ошибки в штрихкодах DataMatrix и GS1-128»..
Код транспортной упаковки (SSCC)
Serial Shipping Container Code — серийный код транспортной упаковки.
Кто должен формировать SSCC
Выдержка из Постановления Правительства РФ от 5 июля 2019 г. № 860, часть VII:
40. Код идентификации транспортной упаковки обувных товаров представляется в виде одномерного штрихового кода, соответствующего международному стандарту GS1-128. Состав кода идентификации транспортной упаковки обувных товаров определяется участником оборота обувных товаров, осуществляющим агрегацию обувных товаров в транспортную упаковку.
Это означает что для транспортных упаковок коды не получится заказать в Честном знаке, нужно сделать их самостоятельно.