Как настроить печать штрихкода EAN-13 Add-On 2 на принтере Godex через БПО в 1С?

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

При автоматизации складского учета и розничной торговли часто возникает необходимость печати составных штрихкодов, таких как EAN-13 с 2-значным дополнительным кодом (EAN-13 Add-On 2). Этот формат активно применяется при маркировке периодических изданий, весовых товаров или книг. Однако при использовании принтеров этикеток (например, популярной серии Godex G500) через механизм Библиотеки подключаемого оборудования (БПО) разработчики сталкиваются с ситуацией, когда стандартный EAN-13 печатается корректно, а при передаче 15-значного кода с типом EAN13AddON2 принтер выдает пустую этикетку.

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

Причины возникновения проблемы и особенности языка EZPL

Проанализируем архитектуру взаимодействия 1С с принтером через внешнюю компоненту godexezpl8. В отличие от печати табличных документов через Windows-драйвер, внешняя компонента БПО использует декларативное описание этикетки. Программа 1С формирует XML-пакет с параметрами полей и штрихкодов, а компонента транслирует его во внутренние команды принтера на языке EZPL.

Разберем основные факторы, приводящие к ошибкам печати:

  1. Разделение команд в прошивке принтера: В командном языке EZPL стандартный штрихкод EAN-13 и штрихкод EAN-13 с дополнением Add-On 2 обрабатываются принципиально разными командами. Для базового EAN-13 принтер ожидает команду BE (идентификатор типа E), а для формата с 2-значным хвостом — команду BF (идентификатор типа F). В устаревших версиях внешней компоненты сопоставление типа EAN13AddON2 отсутствовало, из-за чего блок штрихкода просто игнорировался при сборке задания.
  2. Строгий контроль длины и контрольного символа: Встроенный аппаратный генератор штрихкодов Godex выполняет валидацию входных данных. Значение должно содержать строго 15 цифр (12 цифр данных + 1 контрольная цифра основного кода + 2 цифры дополнительного блока). Если контрольный символ рассчитан неверно или строка передана без дополнения, принтер штатно отменяет вывод штрихкода.
  3. Несоответствие схемы макета БПО: Стандартный редактор макетов этикеток БПО может требовать явного указания типа штрихкода в свойствах поля макета, чтобы корректно сформировать XML-структуру для драйвера.

Пошаговое решение: обновление компоненты и настройка макета

Рассмотрим порядок действий для настройки корректного вывода этикеток:

  1. Обновление внешней компоненты: Необходимо обновить библиотеку godexezpl8.dll в справочнике подключаемого оборудования 1С до актуальной сборки. В обновленных версиях драйвера реализована поддержка тега EAN13AddON2 и трансляция в команду BF прошивки EZPL.
  2. Настройка макета в БПО: Перейдем в справочник Шаблоны этикеток и ценников, откроем требуемый шаблон и в свойствах объекта «Штрихкод» выберем тип EAN13 + 2 цифры (Add-On 2).
  3. Проверка формата данных: Убедимся, что при компоновке данных штрихкод передается строкой ровно из 15 цифр.

Посмотрим на пример правильного формирования строки штрихкода перед отправкой на печать:


// Формирование корректного 15-значного значения
ОсновнойШК = "460123456789"; // 12 знаков данных
КонтрольныйРазряд = РассчитатьКонтрольныйСимволEAN13(ОсновнойШК);
ДополнительныйБлок = "05"; // 2 знака Add-On

ПолныйШтрихкод = ОсновнойШК + КонтрольныйРазряд + ДополнительныйБлок; // Итого 15 знаков

Проблема печати длинных лент через RDP и графический драйвер

Часто в качестве альтернативы программисты настраивают принтер как обычный Windows-принтер и печатают этикетки через табличный документ 1С. Однако при работе в терминальных сессиях (RDP) и печати больших партий (длинных лент) этот подход вызывает серьезные проблемы:

  1. Перегрузка буфера печати: При печати через графический драйвер каждая этикетка рендерится как растровое изображение высокого разрешения (203 или 300 DPI). Задание на сотни этикеток весит десятки и сотни мегабайт.
  2. Сбои виртуальных каналов RDP: Передача тяжелого графического потока через перенаправленные порты Easy Print или сетевые спулеры приводит к тайм-аутам, пропускам страниц и зависанию очереди печати.
  3. Падение качества: Растрирование тонких линий штрихкода может приводить к размытию штрихов, в результате чего сканеры перестают считывать этикетку.

Преимущество командного режима (EZPL): При использовании внешней компоненты БПО на принтер отправляется не растровое изображение, а короткий текстовый скрипт размером в несколько сотен байт. Отрисовку штрихкода выполняет микропроцессор самого принтера на аппаратном уровне. Это гарантирует максимальную четкость штрихов и мгновенную передачу задания по сети без риска потери данных.

Альтернативные способы прямой печати

Если обновление компоненты БПО по каким-то причинам недоступно, рассмотрим проверенные инженерные альтернативы отправки команд на принтер Godex:

  1. Прямая печать через сокет TCP (порт 9100):

    Если принтер оснащен Ethernet-интерфейсом или подключен к аппаратному принт-серверу, 1С может отправлять EZPL-код напрямую на IP-адрес принтера через сетевой порт 9100. Это полностью исключает установку драйверов на сервере 1С.

  2. Печать через драйвер «Generic / Text Only» (режим RAW):

    При USB-подключении к рабочей станции устанавливается стандартный драйвер Windows Только текст (Generic / Text Only). 1С отправляет текстовый файл с EZPL-командами в спулер печати в режиме прямого вывода данных (RAW Spooling), что сохраняет векторное качество и высокую скорость печати.

  3. Эмуляция протокола Zebra (ZPL / GEPL):

    Принтеры Godex серии G500 аппаратно поддерживают эмуляцию командного языка Zebra ZPL. В БПО можно настроить принтер через драйвер Zebra (ZPL) и использовать команду ^BE для вывода штрихкода EAN-13 с блоком расширения.

← На главную