При автоматизации складского учета и розничных продаж часто возникает ситуация: штрихкод формата EAN-13 успешно генерируется в 1С по нажатию кнопки «Присвоить штрихкод», отправляется на печать через термопринтер этикеток, но оптический сканер наотрез отказывается его считывать. При этом фабричные штрихкоды на товарах или книгах тот же самый сканер распознает мгновенно. Если отправить этот же макет из 1С на обычный офисный лазерный принтер, штрихкод читается без проблем.
Проанализируем физику процесса, выясним первопричину сбоя и разберем по шагам, как настроить параметры оборудования и конфигурации для гарантированного считывания кодов.
Когда сканер считывает штрихкод EAN-13, для него важны не только сами черные полосы, но и точное соотношение их ширины, а также ширина белых промежутков между ними. В спецификации EAN-13 информация заложена именно в относительной ширине четырех базовых модулей.
Если при печати на обычном офисном принтере с разрешением 600 или 1200 dpi линии получаются идеально четкими, то на термопринтерах (например, популярных моделях TSC или Zebra) стандартное разрешение термоголовки составляет всего 203 dpi (около 8 точек на миллиметр), реже — 300 dpi. В таких условиях любая погрешность масштабирования или некорректный нагрев термоголовки приводит к тому, что соседние штрихи «слипаются», тонкие линии утолщаются, а белые зазоры перекрываются. В итоге сканер фиксирует нарушение контрольной суммы и отбрасывает считанную последовательность.
Рассмотрим основные факторы, приводящие к деформации полос штрихкода:
Разберем первоочередное действие, решившее проблему в разобранной ситуации. Нам необходимо скорректировать параметры нагрева термоголовки:
Посмотрим на параметры формирования печатной формы в 1С. Если штрихкод выводится в виде картинки в табличный документ, драйвер операционной системы пытается растянуть пиксели под физическую сетку головки принтера.
Для корректного вывода выполним следующие настройки макета:
Растягивать или Пропорционально в режим Реальный размер.Если печать выполняется в терминальной среде (RDP) и стандартный драйвер продолжает искажать толщину штрихов, рассмотрим альтернативный и наиболее надежный способ — прямую отправку команд на языке управления принтером (например, TSPL для TSC или ZPL для Zebra).
В этом сценарии 1С не формирует тяжелый графический растр, а передает текстовый пакет команд прямо в порт принтера или raw-очередь печати. Принтер рассчитывает ширину каждого штриха аппаратно в точках головки, полностью исключая ошибки сглаживания:
Команда = "SIZE 58 mm, 40 mm" + Символы.ПС;
Команда = Команда + "GAP 2 mm, 0 mm" + Символы.ПС;
Команда = Команда + "DIRECTION 1" + Символы.ПС;
Команда = Команда + "CLS" + Символы.ПС;
// Печать штрихкода EAN-13: координаты X, Y, тип, высота, печать текста, угол, узкий модуль, широкий модуль
Команда = Команда + "BARCODE 30,50,""EAN13"",80,1,0,2,2,""" + ШтрихкодТовара + """" + Символы.ПС;
Команда = Команда + "PRINT 1,1" + Символы.ПС;
Такой подход обеспечивает идеальное качество оттиска, максимальную скорость работы даже через RDP-соединения с низкой пропускной способностью и стопроцентную считываемость любыми моделями сканеров.