Печать этикеток и ценников из 1С на специализированных принтерах штрихкодов — одна из самых частых задач в сфере розничной и оптовой торговли. Однако в процессе настройки оборудования технические специалисты регулярно сталкиваются со специфическими проблемами: цифры под штрихкодом становятся слишком мелкими и нечитаемыми, либо сам штрихкод распечатывается некорректно и отказывается считываться сканером. Особенно остро эти проблемы проявляются при работе в терминальном режиме (через RDP) на популярных принтерах семейства Zebra ZDesigner GK420 (GK420d/GK420t).
В этой статье мы подробно разберем причины возникновения подобных сбоев и рассмотрим пошаговые инструкции по их устранению как на уровне настройки драйверов принтера, так и непосредственно в конфигурации 1С.
Для начала проанализируем ситуацию, когда на экране компьютера в форме предварительного просмотра 1С штрихкод и цифры под ним выглядят пропорционально, но при выводе на печать принтер Zebra выдает микроскопический, смазанный текст под штрихами. Выясним причину этого поведения.
Основной источник проблемы кроется во взаимодействии компоненты печати штрихкодов (например, 1CBarCode.ocx) с подсистемой печати Windows (GDI) и драйвером принтера этикеток:
Наиболее надежным и профессиональным решением, которое гарантирует стабильный результат на любых моделях принтеров и при любых разрешениях, является разделение штрихкода и его текстового представления в макете 1С. Мы отключим генерацию человекочитаемого текста внутри самой компоненты штрихкода и выведем цифры стандартным текстовым полем 1С.
Рассмотрим этот процесс по шагам:
ОтображатьТекст = Ложь программно).ТекстШтрихкода).Посмотрим на пример кода, реализующий этот подход при программном выводе макета:
// Получаем область макета этикетки
ОбластьЭтикетки = Макет.ПолучитьОбласть("СтрокаЭтикетки");
// Находим рисунок штрихкода в области
РисунокШК = ОбластьЭтикетки.Рисунки.Штрихкод;
// Управляем свойствами компоненты штрихкода напрямую
РисунокШК.Объект.ТипКода = 1; // Например, EAN13
РисунокШК.Объект.Сообщение = СтрокаШтрихкода;
РисунокШК.Объект.ОтображатьТекст = Ложь; // Отключаем генерацию мелкого текста под кодом
// Передаем значение штрихкода в обычную текстовую ячейку под рисунком
ОбластьЭтикетки.Параметры.ТекстШтрихкода = СтрокаШтрихкода;
// Табличный документ для вывода на печать
ТабДок.Вывести(ОбластьЭтикетки);
Если вносить изменения в структуру макета 1С по каким-то причинам нельзя, необходимо скорректировать поведение самого драйвера принтера Zebra, заставив его обрабатывать шрифты Windows без подмены. Разберем по шагам, как настроить драйвер:
В процессе экспериментов с размерами макета часто возникает сопутствующая проблема: штрихкод печатается крупно и красиво, но полностью перестает распознаваться и считываться лазерным или имидж-сканером. Проанализируем физику работы термопринтера, чтобы понять, почему это происходит.
Штрихкод состоит из чередующихся черных и белых полос строго определенных пропорций. Принтер этикеток формирует изображение путем нагрева пикселей (точек) термоголовки. При разрешении 203 DPI ширина минимального штриха должна быть кратна физической точке нагревательного элемента принтера. Например, тонкий штрих равен 1 точке, средний — 2 точкам, толстый — 3 точкам.
Если в 1С в параметрах страницы установлен масштаб По ширине листа (или любой другой масштаб, отличный от 100%), платформа 1С перед отправкой на принтер пытается программно сжать или растянуть изображение. Драйвер принудительно пересчитывает ширину полос, округляя дробные пиксели. В результате тонкий штрих шириной в 1.4 точки округляется где-то до 1 точки, а где-то до 2 точек. Пропорции штрихкода искажаются, границы замыливаются, и сканер не может распознать структуру кодировки.
Чтобы избежать геометрических искажений линий штрихкода при печати, необходимо соблюдать золотое правило верстки этикеток в 1С:
Когда принтер подключен локально к компьютеру пользователя, а печать этикеток запускается из базы 1С, расположенной на удаленном терминальном сервере (через RDP), часто возникает проблема несовместимости версий драйверов и искажения данных.
По умолчанию Windows Server при подключении клиента использует технологию Terminal Services Easy Print. Этот механизм значительно упрощает жизнь системным администраторам, избавляя от необходимости устанавливать драйверы принтеров на сервере. Однако для печати графики высокой точности (каковой и является штрихкод на 203 DPI) Easy Print не подходит. Он преобразует этикетку в формат XPS на сервере, передает файл на клиентский ПК, где локальный драйвер растрирует его обратно. В процессе этой двойной конвертации линии штрихкода искажаются, теряют четкость и перестают читаться сканером.
Рассмотрим порядок действий для настройки стабильной печати в RDP:
gpedit.msc) перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров.
Найдите политику "Использовать в первую очередь драйвер принтера Easy Print служб удаленных рабочих столов" и переведите ее в состояние Отключено (Disabled).Применяя данные методики в комплексе, мы гарантируем стабильную и качественную печать этикеток любого размера с высокой четкостью штрихов и легко читаемыми цифрами на принтерах Zebra GK420.