При автоматизации складского учета и розничной торговли часто возникает необходимость печати составных штрихкодов, таких как EAN-13 с 2-значным дополнительным кодом (EAN-13 Add-On 2). Этот формат активно применяется при маркировке периодических изданий, весовых товаров или книг. Однако при использовании принтеров этикеток (например, популярной серии Godex G500) через механизм Библиотеки подключаемого оборудования (БПО) разработчики сталкиваются с ситуацией, когда стандартный EAN-13 печатается корректно, а при передаче 15-значного кода с типом EAN13AddON2 принтер выдает пустую этикетку.
Разберем детально, почему возникает эта ошибка, как работает передача команд в принтер и какими способами можно организовать стабильную печать длинных лент этикеток без сбоев и зависаний в терминальном режиме (RDP).
Проанализируем архитектуру взаимодействия 1С с принтером через внешнюю компоненту godexezpl8. В отличие от печати табличных документов через Windows-драйвер, внешняя компонента БПО использует декларативное описание этикетки. Программа 1С формирует XML-пакет с параметрами полей и штрихкодов, а компонента транслирует его во внутренние команды принтера на языке EZPL.
Разберем основные факторы, приводящие к ошибкам печати:
BE (идентификатор типа E), а для формата с 2-значным хвостом — команду BF (идентификатор типа F). В устаревших версиях внешней компоненты сопоставление типа EAN13AddON2 отсутствовало, из-за чего блок штрихкода просто игнорировался при сборке задания.Рассмотрим порядок действий для настройки корректного вывода этикеток:
godexezpl8.dll в справочнике подключаемого оборудования 1С до актуальной сборки. В обновленных версиях драйвера реализована поддержка тега EAN13AddON2 и трансляция в команду BF прошивки EZPL.Посмотрим на пример правильного формирования строки штрихкода перед отправкой на печать:
// Формирование корректного 15-значного значения
ОсновнойШК = "460123456789"; // 12 знаков данных
КонтрольныйРазряд = РассчитатьКонтрольныйСимволEAN13(ОсновнойШК);
ДополнительныйБлок = "05"; // 2 знака Add-On
ПолныйШтрихкод = ОсновнойШК + КонтрольныйРазряд + ДополнительныйБлок; // Итого 15 знаков
Часто в качестве альтернативы программисты настраивают принтер как обычный Windows-принтер и печатают этикетки через табличный документ 1С. Однако при работе в терминальных сессиях (RDP) и печати больших партий (длинных лент) этот подход вызывает серьезные проблемы:
Преимущество командного режима (EZPL): При использовании внешней компоненты БПО на принтер отправляется не растровое изображение, а короткий текстовый скрипт размером в несколько сотен байт. Отрисовку штрихкода выполняет микропроцессор самого принтера на аппаратном уровне. Это гарантирует максимальную четкость штрихов и мгновенную передачу задания по сети без риска потери данных.
Если обновление компоненты БПО по каким-то причинам недоступно, рассмотрим проверенные инженерные альтернативы отправки команд на принтер Godex:
Если принтер оснащен Ethernet-интерфейсом или подключен к аппаратному принт-серверу, 1С может отправлять EZPL-код напрямую на IP-адрес принтера через сетевой порт 9100. Это полностью исключает установку драйверов на сервере 1С.
При USB-подключении к рабочей станции устанавливается стандартный драйвер Windows Только текст (Generic / Text Only). 1С отправляет текстовый файл с EZPL-командами в спулер печати в режиме прямого вывода данных (RAW Spooling), что сохраняет векторное качество и высокую скорость печати.
Принтеры Godex серии G500 аппаратно поддерживают эмуляцию командного языка Zebra ZPL. В БПО можно настроить принтер через драйвер Zebra (ZPL) и использовать команду ^BE для вывода штрихкода EAN-13 с блоком расширения.