Часто при автоматизации складского учета или розничной торговли возникает потребность внедрить внутренние штрихкоды необычной длины или формата. Давайте подробно проанализируем ситуацию, с которой столкнулся автор: он решил использовать формат EAN-13, но намеренно нарушить 13-е контрольное число для кодирования собственной информации. Дополнительно разберем сопутствующую проблему, когда штрихкод Code 128 отлично сканируется с экрана монитора, но наотрез отказывается читаться с распечатанной этикетки шириной 58 мм. Рассмотрим эти вопросы по шагам.
Стандарт EAN-13 жестко регламентирует свою структуру. Первые 12 цифр несут основную информацию (префикс, код предприятия, код товара), а вот 13-й символ является контрольным числом. Это число вычисляется по строгому математическому алгоритму на основе предыдущих двенадцати цифр.
Что произойдет, если мы умышленно сгенерируем штрихкод с неверным контрольным символом? Посмотрим на поведение оборудования:
EAN-13, заставив устройство передавать данные "как есть". Однако, такая функция доступна далеко не на всех устройствах, и это потребует ручной перенастройки каждого сканера на предприятии.Даже если мы заставим сканер прочитать неправильный EAN-13, мы неминуемо столкнемся с программными ограничениями. Разберем, как на такие штрихкоды отреагирует учетная система.
В платформе 1С и типовых конфигурациях (таких как Розница, Управление торговлей, ERP) встроены строгие механизмы валидации штрихкодов. Для внутренних нужд 1С обычно резервирует префиксы, начинающиеся с цифры 2 (например, весовые товары). Система всегда самостоятельно вычисляет последнюю контрольную цифру по алгоритму при генерации или поиске номенклатуры.
Если в систему начнет поступать 13-значная комбинация с "неправильным" контрольным числом, мы получим следующие проблемы:
Перейдем ко второй проблеме. Пытаясь обойти ограничения, автор попробовал использовать формат Code 128, который позволяет кодировать любое количество символов и не требует строгой контрольной цифры в конце для визуального отображения. Однако код прекрасно считывался с экрана, но сканер не брал его с распечатанной термоэтикетки шириной 58 мм. Выясним причину.
Это классическая аппаратная проблема, связанная с разрешением печати, а не с неисправностью сканера. Code 128 имеет переменную длину: чем больше символов вы в него закладываете, тем шире становится визуальное представление штрихкода.
Проанализируем процесс печати длинного кода на узкой этикетке (58 мм) с использованием стандартного термопринтера:
Как решить проблему с печатью Code 128:
Для исправления ситуации необходимо либо искусственно снизить плотность штрихкода в настройках макета (увеличить ширину, если есть запас места), либо использовать принтеры коммерческого класса с разрешением печати 300 dpi или 600 dpi, которые способны четко отрисовывать микроскопические линии.
Если для внутренних бизнес-процессов критически не хватает стандартной длины EAN-13, рассмотрим более надежные и современные альтернативы, чтобы не нарушать стандарты:
ITF-14. Он строится на базе логики EAN-13, но позволяет вместить 14 цифр. Это дает дополнительный разряд для кодирования, например, вида упаковки товара.DataMatrix способен вместить огромный объем информации (до нескольких тысяч символов) в виде небольшого квадрата. Такие коды не подвержены проблеме "слипания" линий при печати на термопринтерах, занимают минимум места и считываются современными 2D-сканерами под любым углом.Таким образом, нарушение контрольного числа в стандартизированных штрихкодах неизбежно приведет к проблемам на аппаратном и программном уровнях. Гораздо эффективнее использовать подходящие под задачу форматы (например, двумерные коды) и следить за соответствием плотности печати возможностям оборудования.