Почему сканер не читает штрихкоды, распечатанные на принтере этикеток из 1С?

Системный администратор 1С v8.3 (Обычные формы) 1С:Розница Торговля и дистрибуция
← На главную

Рассмотрим распространенную и крайне неприятную проблему, с которой часто сталкиваются специалисты при автоматизации розничной торговли и складского учета: специализированный принтер (например, популярный TSC TDP-225) исправно печатает этикетки из 1С:Розница или 1С:Управление торговлей, однако сканеры штрихкодов их не считывают. При этом визуально штрихкод выглядит вполне качественно, цифры под ним разборчивы, а камера обычного мобильного телефона успешно распознает закодированные данные. В то же время профессиональные сканеры (будь то лазерные устройства Metrologic, Honeywell или бюджетные китайские аналоги) упорно молчат и «даже не пищат» при попытке сканирования.

Выясним причину этого феномена и разберем по шагам, как настроить систему, драйверы и торговое оборудование, чтобы раз и навсегда решить проблему нечитаемых штрихкодов. Мы проанализируем как программные сбои (связанные с виртуализацией и RDP), так и тонкие физические настройки печати и геометрию штрихкода.

1. Проблема виртуализации RDP и скрытая ловушка технологии TS EasyPrint

Проанализируем ситуацию, когда печать этикеток выполняется в терминальной сессии (RDP). Это стандартная схема работы для многих распределенных торговых точек, когда база 1С развернута на удаленном сервере, а принтер этикеток подключен локально к рабочему компьютеру кассира или кладовщика.

При стандартном перенаправлении принтеров в RDP-сессии операционная система Windows Server (начиная с версии 2008) по умолчанию использует технологию TS EasyPrint. Данная технология значительно упрощает жизнь системным администраторам, избавляя от необходимости устанавливать драйверы принтеров на сервере. Однако для печати штрихкодов она оказывается губительной.

Технология TS EasyPrint работает следующим образом: она перехватывает задание печати на сервере, преобразует его в промежуточный векторный формат XPS, передает этот файл на клиентский компьютер, где локальный драйвер растрирует его под физическое разрешение принтера. В процессе XPS-конвертации происходит неизбежное микроискажение масштаба (сжатие или растяжение линий на доли миллиметра). Для обычного текста это абсолютно незаметно, но для термопринтера низкого разрешения это критично: меняются пропорции штрихов. Визуально код кажется идеальным, но сканер считывает искаженные пропорции, из-за чего алгоритм декодирования отвергает штрихкод как поврежденный.

Как решить проблему перенаправления печати в RDP:

  1. Использование специализированного софта для проброса портов: Установка программного обеспечения сторонних разработчиков, например Screwdriver (клиентской и серверной частей), позволяет передавать задание печати напрямую на локальный драйвер в обход XPS-преобразования EasyPrint. Это полностью сохраняет исходную геометрию штрихкода.
  2. Отключение EasyPrint через групповые политики (GPO): Если вы хотите использовать стандартный функционал операционной системы, настройте сервер так, чтобы он использовал «родной» драйвер принтера вместо EasyPrint.
    • На сервере откройте редактор локальной групповой политики (команда gpedit.msc).
    • Перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров.
    • Найдите параметр «Использовать в первую очередь драйвер принтера Windows Easy Print» и установите для него значение «Отключено».
  3. Синхронизация драйверов: Обязательно установите абсолютно идентичные версии официального драйвера (рекомендуется использовать стабильные драйверы от компании Seagull Scientific) как на сервере, так и на локальном компьютере.

2. Настройка параметров графики в драйвере принтера: отключаем «Полутона» (Dithering)

Выясним причину, почему штрихкод может выглядеть «пушистым» или размытым при ближайшем рассмотрении. Термопринтер этикеток — это строго монохромное устройство. Каждая точка на его термоголовке может находиться только в двух состояниях: либо нагреться (создать черный пиксель на термобумаге), либо остаться холодной (оставить белый пиксель). Промежуточных серых цветов здесь физически существовать не может.

Когда 1С генерирует макет штрихкода в виде картинки сглаженного формата (с использованием антиалиасинга для красивого отображения на экране), драйвер принтера пытается передать серые пиксели на границах линий. Для этого он использует технологию дизеринга (Dithering), которую в русскоязычных драйверах часто переводят как «Полутона» или «Размытие». Драйвер начинает имитировать серый цвет с помощью сетки из чередующихся мелких черных и белых точек.

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

Инструкция по настройке драйвера для устранения полутонов:

  1. Откройте на компьютере раздел «Устройства и принтеры».
  2. Кликните правой кнопкой мыши по принтеру этикеток (например, TSC TDP-225) и перейдите в «Настройка печати» (Printing Preferences).
  3. Перейдите на вкладку «Графика» (Graphics) или «Параметры страницы» (в зависимости от версии драйвера).
  4. Найдите параметр «Дизеринг» (Dithering) или «Полутона» (Halftones).
  5. Установите значение этого параметра в режим «Нет» (None) или «Порог» (Threshold).

В режиме «Порог» драйвер будет жестко и бескомпромиссно делить цвета: все пиксели темнее определенного порога станут идеально черными, а все, что светлее — идеально белыми. Края линий штрихкода на этикетке мгновенно станут ровными и контрастными, что гарантирует уверенное считывание сканером.

3. Геометрия штрихкода и математика разрешения (DPI) принтера

Проанализируем физику формирования изображения самой термоголовкой принтера. Большинство стандартных принтеров этикеток (включая TSC TDP-225) имеют разрешение 203 DPI (точек на дюйм). Это означает, что на одном миллиметре термоголовки умещается ровно 8 нагревательных элементов (размер одной физической точки равен ~0,125 мм).

Когда штрихкод печатается в виде картинки, сгенерированной в 1С под экранное разрешение (обычно 96 DPI), драйвер принтера вынужден пересчитывать пиксели под физическую сетку термоголовки в 203 DPI. Так как 203 не делится на 96 без остатка, драйвер округляет ширину линий. В результате один штрихкод может содержать одинаковые по стандарту линии, но одна напечатается шириной в 2 точки термоголовки, а другая — в 3 точки. Это нарушает пропорции стандарта штрихкода (например, EAN-13 или Code-128), из-за чего сканеры отказываются его декодировать.

Как решить проблему геометрического несоответствия:

  1. Аппаратная печать штрихкодов (Рекомендуется): Это самый надежный профессиональный метод автоматизации. Вместо того чтобы формировать штрихкод в виде картинки в 1С, на принтер отправляется текстовый файл с командами на его встроенном языке (для принтеров TSC это язык 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
    
    При получении такой команды процессор принтера сам рассчитает идеальный штрихкод без каких-либо округлений или искажений графики.
  2. Использование векторных шрифтов штрихкодов: Если аппаратная печать не подходит, можно установить специализированные шрифты (например, шрифт EAN-13) в операционную систему. В макете 1С штрихкод выводится как обычная текстовая строка, отформатированная этим шрифтом. Драйвер гораздо точнее пересчитывает векторные шрифты под разрешение принтера, чем растровые изображения.
  3. Масштабирование штрихкода в 1С: Если вы вынуждены печатать штрихкод как картинку, максимально увеличьте размер штрихкода в макете этикетки 1С. Чем крупнее штрихкод, тем меньше относительная погрешность округления пикселей влияет на итоговую читаемость кода сканером. Старайтесь делать цифры под штрихкодом меньше, отдавая полезную площадь этикетки под сами полосы кода.

4. Физика «Тихой зоны» (Quiet Zone) и влияние рамок макета

Разберем еще одну неочевидную, но критически важную ошибку при проектировании дизайна этикеток. В обсуждениях на форумах часто можно встретить совет: «убрали рамку — и все заработало». Это напрямую связано с понятием «тихой зоны» (Quiet Zone) штрихкода.

Любому сканеру штрихкодов для успешного декодирования жизненно необходима абсолютно чистая белая зона слева и справа от крайних линий штрихкода. Сканер должен сначала зафиксировать стабильный уровень отраженного белого света, затем считать последовательность штрихов и завершить чтение на другом чистом белом поле. Согласно стандартам, ширина тихой зоны должна быть не менее чем в 10 раз больше ширины самого тонкого штриха (в среднем это не менее 2.5–3 мм с каждой стороны).

Если вы размещаете декоративную рамку вокруг этикетки слишком близко к штрихкоду, или вплотную прижимаете к нему текстовые поля (артикул, наименование), сканер воспримет рамку или буквы как часть первого или последнего штриха. Алгоритм декодирования мгновенно сломается, и сканер «даже не пискнет». Чтобы исправить это, удалите боковые рамки в макете 1С и убедитесь, что штрихкод имеет достаточно свободного пространства по бокам.

5. Аппаратная калибровка, температура нагрева (Darkness) и скорость печати

Проанализируем физические свойства термопечати. Принтер этикеток наносит изображение путем точечного нагрева термочувствительной бумаги термоголовкой. Качество отпечатка напрямую зависит от настроек температуры и скорости протяжки ленты в драйвере принтера.

Рассмотрим основные аппаратные проблемы:

Рекомендуемые параметры настройки физической печати:

  1. Откройте «Настройки печати» принтера этикеток.
  2. Перейдите на вкладку «Параметры принтера» (Printer Options) или «Параметры страницы».
  3. Установите скорость печати (Print Speed) на значение 2.00 in/s (или 50.8 мм/сек).
  4. Отрегулируйте плотность печати (Darkness) — оптимальное значение обычно находится в диапазоне от 8 до 10 единиц. Подберите его экспериментально так, чтобы штрихи были контрастными, но не расплывались по краям.
  5. В качестве метода печати выберите «Термопечать» (Direct Thermal), если вы используете этикетки без красящей ленты (риббона).

Подведем итог: проблема нечитаемости штрихкодов практически никогда не связана со сбоями в платформе 1С:Предприятие. Это всегда физико-геометрический процесс. Для гарантированного считывания этикеток на любых точках продаж выполните три главных действия: отключите полутона в свойствах драйвера, уберите любые рамки вблизи штрихкода для обеспечения «тихой зоны» и, по возможности, настройте прямую отправку команд на языке принтера вместо печати нестабильной графики. Эти простые и проверенные на практике шаги сберегут нервы вашим кассирам и обеспечат быструю и бесперебойную работу торговых точек.

← На главную