|
|
Существенно помочь в автоматизации процессов учета продукции призван штрихкод. Он постоянно эволюционирует – на смену старому, линейному, одномерному приходит новый – двумерный. Его штрихкодом называют уже по инерции - как таковых штрихов в нем уже нет.
Как известно, языки развиваются: появляются новые слова, упрощаются орфография и синтаксис. Схожим образом развивается и штрихкодовый язык. Штрихкод (ШК) служит не только для идентификации товаров на прилавках. Люди приспосабливают его под свои нужды, выдумывая все новые и новые стандарты. Сначала были цифры, потом к цифрам добавились специальные символы-разделители, затем в штрихкод стало возможно "упаковывать" и весь латинский алфавит. ШК становился плотнее. (Напомним, что штрихкод - это не черные полосы разной ширины, это чередование черных и белых полос разной ширины, ведь пространство между черными полосами тоже информация). Затем штрихи стали точками, и настала эра двумерных (2D) ШК.
Важно пояснить, что, как правило, линейные ШК не несут в себе никакой информации, кроме набора цифр, которые чаще всего пишутся под ним же. Ошибочно думать, что, считав ШК, мы получим всю информацию о товаре. Когда кассиры в супермаркетах считывают ШК, полученная последовательность цифр передается на сервер, который в свою очередь находит полное описание товара под этим номером и выдает в кассовый терминал, а дальше на чековый принтер.
Одномерные (линейные) ШК как раз и есть набор чередующихся черных (темных) и белых (светлых) полос. Если мы введем коэффициент, умножение на который пропорционально меняет ширину всех штрихов, то получим универсальную возможность масштабирования ШК. Такой коэффициент называется мил (mil) и равен 1/100 дюйма.
Если стоит задача поставлять продукцию в супермаркеты, где ее нужно маркировать с помощью ШК, то здесь необходим штрихкод стандарта GS1 (ранее EAN). EAN-13 - для обычных товаров, EAN-8 – для небольших товаров. Разница между ними лишь в том, что в последнем 8 символов, а значит, он будет занимать меньше места при той же плотности штрихов по сравнению с EAN-13 (13 символов). Эта компактность и позволяет наносить EAN-8 на продукцию небольшого размера.
Пример EAN13
Код EAN присваивается международной организацией GS1 (http://www.gs1.org/), которая отвечает за его уникальность. Совпадения номеров исключены. Более того, во всем мире не существует такого номера (штрихкода), на который может претендовать кто-то, кроме его владельца, прошедшего официальную регистрацию в GS1.
Все, что нужно для регистрации ШК стандарта EAN для товара, произведенного в России, можно узнать на сайте GS1. Строгого контроля происхождения товара нет. Считается, что если фирма, подающая заявку, зарегистрирована в РФ, то и товар, на который впоследствии будет наноситься ШК, произведен в нашей стране, хотя иногда это не так.
Процедура регистрации проста: необходимо заполнить табличку, где указать всю номенклатуру товара, на который планируется наносить ШК. Далее GS1 пришлет сертификат с номерами. После этого можно смело клеить на своем товаре номера и реализовывать его в супермаркетах.
Нужно обратить внимание на то, что номер состоит из 12 (для EAN-8 – 7) символов, а 13-й (для EAN-8 - 8-й) – контрольная сумма. В большинстве программ, генерирующих графическое изображение ШК стандарта EAN-13 (EAN-8), дописывать крайний символ не требуется.
Отличительной чертой ШК стандарта EAN является наличие 3-х разделителей, которые представляют собой три пары тонких черных линий. Они не несут какой-либо информации, а являются лишь рудиментом, важным во времена появления первых ШК (EAN – один из старейших стандартов ШК) как ограничитель для первых сканеров. Теперь они помогают девушкам-кассирам набирать цифры вручную, когда невозможно считать автоматом.
Выбор типа ШК для внутреннего учета субъективен. Чаще всего он происходит по "совету" верхней (ERP, MES, WMS и т.п.) информационной системы, которая "рекомендует" использовать определенный тип. Однако если перед нами открывается свобода какого-либо выбора, то очень важно постараться учесть все преимущества и недостатки.
Для начала определимся, нужно ли дублировать закодированную в ШК информацию на этикетке. Эта необходимость может возникнуть лишь в одном случае - если мы хотим предусмотреть возможность чтения этого ШК человеком. Чаще всего она не нужна и только занимает лишнее пространство на этикетке (назовем этикеткой все то, куда наносится служебная информация). Однако все же рекомендуется ее наносить. Во-первых, это дает возможность при повреждении штрихов восстановить данные, закодированные в ШК. Во-вторых, можно предусмотреть возможность выборочного визуального контроля продукции. Например, если в ШК внести номера партии, серии, дату и пр. и разграничить эти группы специальными символами-разделителями, тогда оператор сможет анализировать данные без использования сканеров. Конечно, бывают случаи, когда такая возможность нецелесообразна или даже нежелательна - к примеру, в проездных билетах. Но такие задачи уникальны и мало распространены.
Теперь обратимся к типам линейных ШК. Главное отличие – это поддержка каких-либо других символов, кроме цифр. К примеру, тип Code-39 поддерживает знаки "-", "+", "/" и пр., что очень удобно для ввода в цифровую последовательность визуального разграничения.
Пример Code-39
Тип Code 128 позволяет помещать в ШК символы латиницы, что может облегчить заполнение граф в документах, где часто требуется вносить одинаковые данные. Но надо помнить, что символы требуют большего количества бит, а это удлиняет ШК. Использование символов требует взвешенного подхода.
Пример Code-128
Безусловно, общее количество типов не ограничивается тремя перечисленными. Более того, и названные типы имеют множество разновидностей. В наше время все мало-мальски известные ШК могут быть прочитаны современными сканерами, поэтому ограничениями, связанными с невозможностью прочитать ШК из-за незнания "языка", можно пренебречь.
С развитием технологий учета стали возрастать и требования к объему информации, вносимой в ШК. Появился вопрос: а нельзя ли вносить не только коды продукции и простенькие слова, но и целые строки данных, в том числе буквенных? Оказалось, что можно. К тому же, зачем наносить длинные линии, протяженность которых в любом случае никак не сказывается на объеме внесенных данных? Может быть, есть возможность каким-то образом уплотнить код?
Первые попытки сводились к тому, чтобы просто уменьшить длину штрихов и располагать их друг под другом. А потом, последовательно, строка за строкой считывать эти короткие штрихи, складывая полученную информацию в длинные "предложения". Оказалось, что не все так просто, потому что, во-первых, надо обеспечить хотя бы элементарные алгоритмы восстановления поврежденных данных (в линейном ШК эта задача решалась удлинением самих линий, что физически уменьшало вероятность повреждения всего кода), во-вторых, надо определять границы чтения - откуда начинаются данные и где они заканчиваются?
В настоящее время распространенных двухмерных ШК насчитывается около десятка. Сейчас это достаточно надежные и защищенные коды. Основное их применение – маркировка бумажных документов. Интересно, но 2D-ШК по инерции называют "штрихкодами", хотя в них уже давно нет штрихов.
Одним из первых появился код PDF417. Это 2D-ШК, выстроенный путем расположения в колонку обычных линейных штрихкодов. Сейчас его можно увидеть на каждой бутылке алкоголя (кроме пива) на акцизной марке. В этом ШК содержится информация о продукте, производителе и принадлежности к группе спиртосодержащих продуктов.
Пример кода PDF-417
Код Aztec - сравнительно молодой ШК. Сегодня чаще всего он используется в платежных поручениях в банк. Любопытной его особенностью является возможность разбивать информацию на отдельные модули и затем вытягивать их в линию. Код этот квадратный, и с ростом объема хранимых данных его размеры возрастают. Получается, что "тень" ШК может "замять" под себя существенную часть документа, стеснив при этом данные, предназначенные для чтения человеком. Чтобы избежать этого, мелкие квадраты размножают и располагают в ряд.
Пример кода Aztec
Особняком стоит код DataMatrix. Основное его достоинство в том, что он может наноситься, а главное – без особого труда читаться с поверхности самого изделия (при помощи технологии DPM-печати). Простота печати, отличные алгоритмы восстановления данных при частичном повреждении делают его уникальным в своем роде.Пример кода DataMatrix
В большинстве 2D-кодов существует программно задаваемый уровень контроля над ошибками путем дополнения контрольных сумм, кодирования различными методами и пр. Теперь пользователь, в зависимости от важности информации, сам может назначать количество уровней защиты. Безусловно, чем сложнее алгоритм защиты, тем больший размер имеет ШК. Тут, как и везде, нужен баланс.
Андрей Смирнов