Рассмотрим распространенную и крайне неприятную проблему, с которой часто сталкиваются специалисты при автоматизации розничной торговли и складского учета: специализированный принтер (например, популярный TSC TDP-225) исправно печатает этикетки из 1С:Розница или 1С:Управление торговлей, однако сканеры штрихкодов их не считывают. При этом визуально штрихкод выглядит вполне качественно, цифры под ним разборчивы, а камера обычного мобильного телефона успешно распознает закодированные данные. В то же время профессиональные сканеры (будь то лазерные устройства Metrologic, Honeywell или бюджетные китайские аналоги) упорно молчат и «даже не пищат» при попытке сканирования.
Выясним причину этого феномена и разберем по шагам, как настроить систему, драйверы и торговое оборудование, чтобы раз и навсегда решить проблему нечитаемых штрихкодов. Мы проанализируем как программные сбои (связанные с виртуализацией и RDP), так и тонкие физические настройки печати и геометрию штрихкода.
Проанализируем ситуацию, когда печать этикеток выполняется в терминальной сессии (RDP). Это стандартная схема работы для многих распределенных торговых точек, когда база 1С развернута на удаленном сервере, а принтер этикеток подключен локально к рабочему компьютеру кассира или кладовщика.
При стандартном перенаправлении принтеров в RDP-сессии операционная система Windows Server (начиная с версии 2008) по умолчанию использует технологию TS EasyPrint. Данная технология значительно упрощает жизнь системным администраторам, избавляя от необходимости устанавливать драйверы принтеров на сервере. Однако для печати штрихкодов она оказывается губительной.
Технология TS EasyPrint работает следующим образом: она перехватывает задание печати на сервере, преобразует его в промежуточный векторный формат XPS, передает этот файл на клиентский компьютер, где локальный драйвер растрирует его под физическое разрешение принтера. В процессе XPS-конвертации происходит неизбежное микроискажение масштаба (сжатие или растяжение линий на доли миллиметра). Для обычного текста это абсолютно незаметно, но для термопринтера низкого разрешения это критично: меняются пропорции штрихов. Визуально код кажется идеальным, но сканер считывает искаженные пропорции, из-за чего алгоритм декодирования отвергает штрихкод как поврежденный.
Как решить проблему перенаправления печати в RDP:
Screwdriver (клиентской и серверной частей), позволяет передавать задание печати напрямую на локальный драйвер в обход XPS-преобразования EasyPrint. Это полностью сохраняет исходную геометрию штрихкода.gpedit.msc).Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров.Seagull Scientific) как на сервере, так и на локальном компьютере.Выясним причину, почему штрихкод может выглядеть «пушистым» или размытым при ближайшем рассмотрении. Термопринтер этикеток — это строго монохромное устройство. Каждая точка на его термоголовке может находиться только в двух состояниях: либо нагреться (создать черный пиксель на термобумаге), либо остаться холодной (оставить белый пиксель). Промежуточных серых цветов здесь физически существовать не может.
Когда 1С генерирует макет штрихкода в виде картинки сглаженного формата (с использованием антиалиасинга для красивого отображения на экране), драйвер принтера пытается передать серые пиксели на границах линий. Для этого он использует технологию дизеринга (Dithering), которую в русскоязычных драйверах часто переводят как «Полутона» или «Размытие». Драйвер начинает имитировать серый цвет с помощью сетки из чередующихся мелких черных и белых точек.
В результате края штрихов получаются неровными, «зубчатыми» или «пушистыми», а внутри белых промежутков могут появляться отдельные черные точки. Лазерный луч или матрица фотосканера спотыкаются о такие неровности, не могут четко определить границу между штрихом и пробелом, и сканер не распознает штрихкод.
Инструкция по настройке драйвера для устранения полутонов:
TSC TDP-225) и перейдите в «Настройка печати» (Printing Preferences).В режиме «Порог» драйвер будет жестко и бескомпромиссно делить цвета: все пиксели темнее определенного порога станут идеально черными, а все, что светлее — идеально белыми. Края линий штрихкода на этикетке мгновенно станут ровными и контрастными, что гарантирует уверенное считывание сканером.
Проанализируем физику формирования изображения самой термоголовкой принтера. Большинство стандартных принтеров этикеток (включая TSC TDP-225) имеют разрешение 203 DPI (точек на дюйм). Это означает, что на одном миллиметре термоголовки умещается ровно 8 нагревательных элементов (размер одной физической точки равен ~0,125 мм).
Когда штрихкод печатается в виде картинки, сгенерированной в 1С под экранное разрешение (обычно 96 DPI), драйвер принтера вынужден пересчитывать пиксели под физическую сетку термоголовки в 203 DPI. Так как 203 не делится на 96 без остатка, драйвер округляет ширину линий. В результате один штрихкод может содержать одинаковые по стандарту линии, но одна напечатается шириной в 2 точки термоголовки, а другая — в 3 точки. Это нарушает пропорции стандарта штрихкода (например, EAN-13 или Code-128), из-за чего сканеры отказываются его декодировать.
Как решить проблему геометрического несоответствия:
TSPL, для Zebra — ZPL). Принтер сам генерирует штрихкод на аппаратном уровне, сопоставляя ширину каждого штриха со своей физической сеткой нагревательных элементов.
Рассмотрим пример простой управляющей команды на языке TSPL для печати этикетки со штрихкодом:
SIZE 58 mm, 40 mm
GAP 2 mm, 0 mm
DIRECTION 1
CLS
BARCODE 10,10,"EAN13",50,1,0,2,4,"460123456789"
PRINT 1,1
EAN-13) в операционную систему. В макете 1С штрихкод выводится как обычная текстовая строка, отформатированная этим шрифтом. Драйвер гораздо точнее пересчитывает векторные шрифты под разрешение принтера, чем растровые изображения.Разберем еще одну неочевидную, но критически важную ошибку при проектировании дизайна этикеток. В обсуждениях на форумах часто можно встретить совет: «убрали рамку — и все заработало». Это напрямую связано с понятием «тихой зоны» (Quiet Zone) штрихкода.
Любому сканеру штрихкодов для успешного декодирования жизненно необходима абсолютно чистая белая зона слева и справа от крайних линий штрихкода. Сканер должен сначала зафиксировать стабильный уровень отраженного белого света, затем считать последовательность штрихов и завершить чтение на другом чистом белом поле. Согласно стандартам, ширина тихой зоны должна быть не менее чем в 10 раз больше ширины самого тонкого штриха (в среднем это не менее 2.5–3 мм с каждой стороны).
Если вы размещаете декоративную рамку вокруг этикетки слишком близко к штрихкоду, или вплотную прижимаете к нему текстовые поля (артикул, наименование), сканер воспримет рамку или буквы как часть первого или последнего штриха. Алгоритм декодирования мгновенно сломается, и сканер «даже не пискнет». Чтобы исправить это, удалите боковые рамки в макете 1С и убедитесь, что штрихкод имеет достаточно свободного пространства по бокам.
Проанализируем физические свойства термопечати. Принтер этикеток наносит изображение путем точечного нагрева термочувствительной бумаги термоголовкой. Качество отпечатка напрямую зависит от настроек температуры и скорости протяжки ленты в драйвере принтера.
Рассмотрим основные аппаратные проблемы:
Darkness / Температура), термочувствительный слой этикетки начинает «плыть». Черные полосы штрихкода расширяются и сливаются друг с другом, делая белые промежутки критически узкими. Визуально штрихкод выглядит ярким и насыщенным, но сканер прочесть его не может.2.0 in/s или 50.8 мм/сек).Рекомендуемые параметры настройки физической печати:
Подведем итог: проблема нечитаемости штрихкодов практически никогда не связана со сбоями в платформе 1С:Предприятие. Это всегда физико-геометрический процесс. Для гарантированного считывания этикеток на любых точках продаж выполните три главных действия: отключите полутона в свойствах драйвера, уберите любые рамки вблизи штрихкода для обеспечения «тихой зоны» и, по возможности, настройте прямую отправку команд на языке принтера вместо печати нестабильной графики. Эти простые и проверенные на практике шаги сберегут нервы вашим кассирам и обеспечат быструю и бесперебойную работу торговых точек.