Штрихкод

Последние изменение: 25.09.2018

Штрих код (а также «штрих-код», «баркод» и «бар-код») - неверное написание слова «штрихкод» (см. на грамоте.ру).

Штрихкоды были изобретены в США в конце 1940х двумя студентами Норманом Вудлендом и Бернардом Сильвером как средство автоматизированной обработки информации о товарах (патент #2612994 от 1952 года). Существует известная легенда о том, что первым в мире товаром со штрихкодом была жевательная резинка Wrigley. На самом деле Wrigley была первым товаром из продовольственной тележки, с которого был считан штрихкод при проведении демонстрации новой технологии в магазине сети Marsh в городе Трой, Огайо. Помимо Wrigley в тележке были и другие товары со штрихкодом, но кассир выбрал первыми 10 пачек именно этой знаменитой жевательной резинки.

Настоящий прорыв в распространении штрихкодов случился 1 сентября 1981 года с решением министерства обороны США использовать код на основе кодировки CODE39 для маркировки всего товара, закупаемого министерством на военные нужды.  Точно так же сейчас локомотивами внедрения штрихкодов на вторичной упаковке (т.е. на коробках и ящиках) в России являются такие компании как Ашан и Мега, которые «вежливо намекают» на это производителям.


Целесообразность внедрения штрихкодов

Штрихкод — всего лишь один из способов машинного считывания информации, такой же как магнитная лента в кредитной карточке или RFID чип в электронном пропуске.  Просто компьютеры ценой $50 не умеют читать обычный текст с коробок, как это делает человек — компьютеру нужен штрихкод.

Как и всё остальное в этой жизни, технологии окупаются только там, где их применение целесообразно.  Все технологии в бизнесе можно условно разделить на 2 группы: 1) инвестиционно-затратные, которые уменьшают себестоимость единицы продукции или услуги, и 2) увеличивающие себестоимость, но приносящие выгоду в чем-то другом (например, покупка компьютера ускоряет набор и правку сопутствующих документов, а пастеризация молока уменьшает общие потери).

Штрихкоды в торговле позволяют быстрее идентифицировать товар и рассчитать покупателя.  Штрихкоды на складе также позволяют быстрее идентифицировать товар или даже правильно распознать дополнительные характеристики (если они указаны в штрихкоде). Однако если на поступающем товаре изначально нет штрихкодов, а на складе они используются, то на входе приходится делать больше операций на каждую коробку и каждую паллету, печатая штрихкоды, идентифицируя и маркируя товар, что увеличивает общее время приемки. Но даже в этом случае печать и занесение данных о принимаемом товаре не является самым долгим делом на складе.  Машина часами ждет подачи, документы забиваются в информационную систему, человек водит пальцем по накладной в поисках нужной строки, коробки укладываются в паллеты или, наоборот, с этих паллет снимаются.  Или, например, в наименовании по накладной пару слов переставлено по сравнению с заявкой и тем, что написано на коробе.  Кладовщик пойдет пешком к операционистам, постоит подождет, пока оператор договорит по телефону.  Минута-вторая и десяти минут как не бывало.  Основные факторы потери времени при выполнении складских операций такие:

  1. Необходимость пешком относить/приносить бумажные документы;
  2. Ручной подсчет и суммирование количества;
  3. Согласование бумажных поручений, их перепроверка и расшифровка почерков.

Борьба за эффективность по всем трем пунктам сводится к использованию мобильных компьютеров и беспроводной связи.  А зачем тогда нужны штрихкоды?  Затем, что компьютер не умеет читать обычный текст с коробок.

Если обклейка штрихкодами всего входящего товара явно увеличивает время приемки, то выгоды нужно искать на другом уровне.  И выгоды эти проявляются при а) увеличении пропускной способности склада и б) увеличении номенклатурного ряда.

Все дело в том, что штрихкоды сами по себе никого не дисциплинируют и ничью работу на себя не берут.  Штрихкоды не дают гарантий отсутствия ошибок и вообще каких-либо гарантий.  Это принципиально невозможно.  Работу после внедрения штрихкодов можно сравнить с грамотностью документов после установки Microsoft Word с проверкой орфографии.  Формально набираемые на компьютере письма не стали более понятными и "правильными".  Однако добрые 99% ошибок в орфографии и 50% в пунктуации исчезнут.  Можно, конечно, продолжать писать "инвинтарезция" и не обращать внимание на красную волнистую линию.  То же самое может делать и рабочий склада, сканируя один товар, а отгружая другой, или сканируя одну ячейку, а беря из другой.  Потому как, вообще говоря, он может вместо исполнения документа взять под мышку коробку с товаром и пойти домой.

Технология рассчитана на добросовестных работников, которые не хотят злонамеренно отгрузить не то, принять на склад лом по цене запчастей или "потерять"/"забыть" на складе пару  тонн мороженных котлет.  Не хотят, но из-за спешки, большого объема работы или большого количества похожих товаров, допускают ошибки.

В то же время подбор товара к выдаче со штрихкодами становится намного удобнее и быстрее, поскольку на терминале видно, сколько и чего нужно взять из каждой ячейки. При этом каждая ячейка обладает собственным штриховым кодом и программа терминала требует сканировать его, чтобы убедиться в адресе хранения.  Конечно, можно использовать и бумажные поручения на подбор, только их 1) придется печатать, 2) вводить результат с них обратно в компьютер и 3) штрихкоды тогда ни к чему - люди и так хорошо читают простые надписи.

Резюмируя, повторим еще раз: штрихкоды — это инструмент, который при должной организации позволяет справиться с повальным количеством ошибок при увеличении нагрузки на склад, росте числа поставок и номенклатурного ряда.  Если же товаров два, клиент один, а складские работники все равно заблудятся в трех соснах, никакие штрихкоды не спасут.

Что такое штрихкод

Штрихкод — это всего лишь один из способов машинного считывания информации.  Если бы компьютеры ценой $50 умели быстро читать текст с коробок, как это делает человек, никаких штрихкодов не понадобилось бы.  Штрихкоды бывают линейные (1D) и двумерные (2D).  Линейный код можно увидеть на пачке сока или сигарет, а двумерный - на алкогольной акцизной марке. Сам по себе любой линейный штриховой код — это своеобразная азбука Морзе из точек и тире в виде полосок разной ширины с одним важным дополнением: буквы штрихкода сильно отличаются друг от друга, а используемые «правила письма» и «знаки препинания» позволяют нелишний раз проверить правильность прочитанного.  Известно, что в штрихкоде не спрятано ничего интересного кроме тех самых цифр, что уже написаны под ним: 


Рис 1.  Пример кода EAN13


Т.е. «закодировано» в данном случае не значит «зашифровано и спрятано».  Возникает вопрос: почему так много полосок и так мало информации?  В цифрах снизу это занимает намного меньше места!  Мы привыкли, что при компьютерном кодировании целые энциклопедии умещаются на одной пылинке, а тут такой расход бумаги.  Этому есть сразу несколько причин.  Причина №1 — компьютеры за $50 не умеют (или когда-то не умели) читать слишком мелкий «текст».  Причина №2 — чтобы мелкие повреждения не смогли исказить информацию.  Причина №3 — чтобы кассиру было легче найти штрихкод.

Вопрос: правда ли, что в штрихкоде «зашита» информация о цвете, размере или цене товара?  Ответ на него требует дополнительных объяснений и позволяет понять, что представляют из себя штрихкоды с точки зрения бизнеса.

Какие бывают кодировки и что это такое

Существует большое количество различных типов штрихкодов, и это объясняется разными требованиями разных бизнесов, т.е. областью применения.  Т.к. штрихкод - это особый язык, у любого типа штрихкодов есть свой алфавит и свой словарь. Под алфавитом понимается правила кодирования с помошью «штрихов» отдельных цифр, букв и других знаков, позволительных в данной системе кодирования.  А под словарем — что означают эти цифры и буквы внутри кода, где они должны стоять и т.д.  Иногда, как в случае с EAN13, алфавит и словарь называются одинаково, хотя это совершенно разные вещи. Различия между этими понятиями можно понять в следующем сравнении:

Название представление система кодирования формат
Русский язык буквы кириллица орфография
Почтовый индекс цифры образец написания на обороте конверта система кодировки номера отдения
ТОРГ-12
(одна из стандартных форм накладной)
документ слова, буквы, цифры, знаки препинания правила заполнения
EAN13
(вариант GTIN)
 
штрихи EAN13 EAN13
EAN8 штрихи EAN8 EAN8
UPC-A
(вариант GTIN)
штрихи UPC-A EAN13
UPC-E штрихи UPC-A выкидывание 4х нулей из UPC-A
EAN128
(код для маркировки грузов)
штрихи CODE128 EAN128
LOGMARS
(Logistics Applications of Automated Marking and Reading Symbols - военный стандарт США)
 
штрихи CODE39 LOGMARS
HIBS
(Health Industry Barcode - штрихкод индустрии здравоохранения)
штрихи CODE39 или CODE128 HIBS


Рассмотрим это подробнее на примере кода EAN13:

Код EAN13

Код EAN13, вероятно, самый распространенный код на планете, т.к. он присутствует на всех продовольственных товарах.   Аббревиатура EAN означает Европейский Номер Артикула (European Article Number).  EAN13 уникален тем, что он имеет, кроме собственного формата (словаря), еще и собственный алфавит.  Кроме EAN13 похожим алфавитом пользуется только EAN8.  Т.е., если кто-то говорит «EAN13», он сразу как бы говорит и о системе кодирования, и о формате, и о том, как это выглядит:

 
Рис 2.  Разбор кода 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.  Некоторым компаниям не хватает цифр для нумерации всех своих товаров, и тогда им выдается по много номеров производителя сразу.

Под штрихкодом мы видим три группы цифр: одна цифра отдельно и далее две группы по 6 цифр.  Почему одна стоит отдельно?  Код EAN имеет свою историю, и это не самый первый код для товаров, который был придуман.  Самым первым кодом для товаров, который получил большое распространение, был код UPC.  UPC — Универсальный Код Продукта (Universal Product Code).  Насколько универсальный?  Подходит для использования только в США и Канаде.  Когда «моду на штрихкод» решили перенять в Европе, встала проблема: какой код использовать, ведь UPC уже занят американскими и канадскими компаниями.  В оригинальном UPC было 12 цифр, из которых одна — тоже чексумма, т.е. реально полезных только 11, которыми можно закодировать 1011 = десять миллиардов товаров.  Много, но c Европой всё равно наврядли поделятся.  Для выхода из ситуации было придумано гениальное решение — добавить одну лишнюю цифру,  ничего при этом реально к штрихкоду не добавляя.

Дело в том, что в оригинальном UPC одну и ту же цифру можно было закодировать 4-мя различными наборами штрихов: «обычный» код, его зеркально отраженный код (перевернутый) и их инвертированные версии (как бы белый штрихкод на черном фоне).  При печати черным по белому левая группа цифр кодируется «обычным» кодом, а правая — инвертированным (Обыч.|Инверт.).  Именно так.  Это сделано для того, чтобы сканер мог отличить правильно расположенный код (цифры внизу) от перевернутого вверх тормашками (цифры сверху), иначе он прочтет код наоборот (справа-налево).  У перевернутого кода слева будет зеркальная инвертированная часть, а справа зеркальная обычная (Зерк.инверт.|Зерк.обыч.).  А при печати белым по черному (такое тоже предусмотрено) сначала должна идти инвертированная часть, а затем обычная (Инверт.|Обыч.).  Тогда у перевернутого сначала будет зеркальная обычная, а затем зеркальная инвертированная (Зерк.обыч.|Зерк.инверт.).  При этом желательно, чтобы все эти зеркальные и инвертированные версии наборов штрихов отличались друг от друга.

Тут надо рассказать как вообще выбираются штрихи — они выбирается из соображений надежности процесса считывания.  На каждую цифру отводится 7 мест, в каждом из которых может стоять либо тоненький штрих, либо ничего.  Идущие подряд тоненькие штрихи всегда сливаются, образуя более жирные штрихи.  Самый жирный штрих состоит из 4х тонких штрихов подряд. 

Шесть мест дают 27 = 128 вариантов выбора штрихов и пустот.  А для кода надо 10 цифр * 4 версии = 40.  Т.е. 128 - 40 = 88 вариантов не используются.  Какие это варианты?  Это самые неблагонадежные варианты, в которых подряд идут 5 и более штрихов или пустот: при быстром чтении кода в движении 7 тонких штрихов слившихся в один очень сложно отличить от 6ти, 6 от 5ти, и то же самое с пустотами.  При этом все цифры в рамках одного типа кода принято либо начинать пустотой, а оканчивать штрихом, либо наоборот.  Осталось избавиться от слишком широких штрихов и пустот внутри самих кодов.  После такой процедуры от 128ми остаются только 64 - 6 = 58.  Из этих 58ми выбирают 40 таких, которые меньше всего «похожи» друг на друга.

Так вот, при создании кода EAN13 решено было кодировать дополнительную 13ю цифру ничем иным, как чехардой кодировки первой (левой) группы цифр кода UPC.  Если все цифры первой группы имеют обычную кодировку, как в оригинальном коде UPC, то 13я считается равной «0».  А для того, чтобы закодировать «1», «2» и т.п. предусмотрена таблица замены обычной кодировки для отдельных цифр в первой группе на зеркальную инвертированную — это будет уже «неправильный» код UPC, и оригинальный американский сканер (вымерший) его бы не прочел. 

Как видно, в EAN13 (как и в EAN8) есть много всего, но нет информации о цвете или размере, да и уместиться ей негде.  

Помимо блоков номеров, любые коды EAN13, которые начинаются с префиксов 20-29, могут быть использованы предприятием для целей внутреннего учета (т.е. такие штрихкоды будут уникальны только внутри организации, Юнискан за ними не следит и никому такие номера не выдает).

 

В общем случае в коде EAN13 не хранится информации о цвете, размере или других характеристиках конкретной единицы товара.

Итак, в коде присутствуют 13 цифр, из которых использовать для внешней торговли организация может только 3, 4 или 5 цифр (по договоренности с Юнискан).  Маловато.  Где же хранить цвет и размер?  В электронном каталоге производителя!  Там они и хранятся.  Т.е. можно попросить производителя выслать Excel-файл с кодами и описаниями товаров, где всё и будет. 

Для внутренних кодов, начинающихся на 20-29, у организаций уже больше места для творчества.  В них можно поместить и вес, и цвет, и размер.  Например, электронные весы для овощей и фруктов печатают такие коды — на кассе из него будет правильно вычленен и внутренний артикул, и вес.  В другом магазине такой штрихкод скорее всего не поймут. 

Итак, ответ для кода EAN13 найден: в общем случае в коде EAN13 не хранится информации о цвете, размере или других характеристиках конкретной единицы товара.  В нем хранятся страна, фирма и номер товара.  При этом для оригинальных штрихкодов на упаковке производителя касса не воспринимает EAN13 как нечто, что можно разобрать по частям.  В подавляющем большинстве случаев все 13 цифр EAN13, вместе с чексуммой, используются как уникальный цифровой код номенклатуры, наподобие артикула.   А что насчет других кодов?  Читаем дальше.

 

Понятие о GTIN

Существует довольно много кодировок товаров, т.е. способов назначить им номера.  Помимо EAN13 существуют коды EAN8, UPC-A, UPC-E, UCC12, UCC14, ITF-14 и другие для продовольственных товаров, ISBN для книг и т.д.  Всё это различные способы сделать одно и то же — выдать единице товара уникальный номер.  GTIN (Global Trade Item Number) — это и есть глобальный код товара в самом общем смысле.  Единое обозначение требуется во множестве приложений — например для прайслистов или в маркировке грузов.  Разработчики GTIN поступили очень просто: чтобы получить GTIN, конкрентный код с упаковки товара дополняется лидирующими нулями до 14 цифр.  Если мы пользуемся EAN13, то GTIN будет равен «0|EAN13»(т.е. «0» и следом EAN13), а если мы пользуемся EAN8, то GTIN будет равен «000000|EAN8», ну и точно так же с другими кодами товара.  Предполагается, что кодов товара длиннее 14 цифр не встречается.

Код EAN128

EAN128 предназначен для передачи данных о грузе между компаниями.

В отличие от EAN13, у кода EAN128 уникальный только словарь.  Для построения EAN128 используется алфавит CODE128.  Т.е. если кто-то говорит «CODE128», то он имеет в виду алфавит (какие цифры и буквы какими черточками обозначаются).  А если кто-то говорит «EAN128», то он имеет в виду систему кодирования свойств конкретного товара или груза на основе кодировки CODE128. Число 128 в EAN128 не означет, что в нем подряд должно стоять 128 цифр.  Число 128 попало в EAN128 из CODE128, а в CODE128 оно обозначает количество символов, которое способен отобразить данный алфавит, т.е. все 128 символов стандартного ASCII.

отношения между EAN128 и CODE128 такие же, как между формой Торг-12 и русским языком.  Используя русский язык можно писать о чем угодно, но Торг-12 имеет свой формат, и не все, что написано по-русски, является формой Торг-12.  Точно так же не всё, закодированное кодом CODE128 является штрихкодом формата EAN128.

EAN128 является, по-видимому, вторым по распространенности кодом на планете, и вот почему: это код для обмена информацией о товарах и грузах между производственными, транспортными и торговыми компаниями:

 
Рис 3.  Разбор кода EAN128


Группы цифр в скобках под кодом, такие как (02), (15), (3303) и т.д., называются AI (Application Identifiers - коды применения) и объясняют как интерпретировать цифры, идущие следом.  Например, AI с кодом 15 задает последний срок, когда товар еще можно продавать, в формате «2 цифры года, 2 цифры номера месяца, 2 цифры дня» (т.е. ггММдд).  A, например, AI с кодом 330y задает вес груза (паллеты или контейнера) в килограммах, используя также 6 цифр, при этом «y» должен быть заменен на число десятичных знаков в интерпретации этих 6 цифр.  Все эти вещи определены стандартом на 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 буквы/цифры
23x Lot Number Номер лота от 1 до 19 буквы/цифры
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 буквы/цифры

Буквы «x» и «y» в номерах AI означают следующее:

«X» — цифра, обозначающая длину поля.  Например, AI 23x = 237 будет означать, что серийный номер состоит из 7-ми цифр и в коде это будет выглядеть как «(237)1234567».

«Y» — цифра, обозначающая точность после запятой.  Например, AI 330y = 3304 будет означать, что в шести цифрах веса четыре их них будут стоять после запятой и «(3304)123456» будет равно 12,3456 кг.

Cтандарт описывает значение и формат для как минимум 90 кодов применения, упоминая номера накладных, индексы адресов, объемы, серийные номера и т.д., но ничего не говорит о цвете!  Так же нет ни слова о размере свитера или обуви.  Итак, ответ найден: «нет, в коде EAN128 не хранится информации о цвете, но да, в коде хранятся данные о весе и габаритах конкретного контейнера или груза с товаром».

Где же взять цвет и немного о кодах CODE

Помимо CODE128 существуют еще CODE11 и CODE39 (не считая других, которые не-CODE).  Соответственно, CODE11 может кодировать 10 цифр и тире (например, можно написать «110-2102-43»), а CODE39 может кодировать 10 цифр, 26 латинских букв, тире, а также пробел и символы «.+/%$», что, вообще-то, дает 44 символа (в данном случае 39 означает не число символов, а «3 из 9», когда каждый символ кодируют 9 полосок, из которых 3 «толстые»). 

Наиболее популярным и распространенным для внутренних целей явялется CODE39.  Он был создан в 1974 году в компании Intermec Дэйвидом Аллаисом и Рэем Стивенсом.  Единственный недостаток CODE39 - он проигрывает CODE128 в компактности.

Так где же взять цвет?  Ответ прост.   Для этого используются нестандартные внутренние штрихкоды, использующие алфавит CODE11, CODE39 или CODE128.  На коды с цветами не написаны стандарты, и это понятно: слишком много существует разнообразия в обозначении цветов и размеров.  Такие коды можно и нужно разрабатывать самим.


Полезные ссылки

Клуб логистов - Штрихкодирование. Плюсы и минусы
Штрихкоды в Wikipedia
Вопросы и ответы по коду EAN13 (тому, что используют в магазине)