При переходе на новые версии платформы 1С (начиная с 8.3.15 и выше, включая 8.3.18, 8.3.23) многие технические специалисты сталкиваются с неприятным эффектом: штрихкод на этикетках, который годами печатался идеально, внезапно начинает идти «волнами» или «зазубринами». Особенно часто это проявляется на принтерах с разрешением 203 dpi, таких как Godex G500. При этом на моделях с более высоким разрешением (например, G530 на 300 dpi) проблема может не наблюдаться.
В этой статье мы подробно разберем причины возникновения этой ситуации, проанализируем настройки драйверов и научимся правильно готовить макеты для печати, чтобы сканеры считывали штрихкоды мгновенно.
Давайте проанализируем, что происходит при обновлении платформы. В старых версиях 1С (например, 8.3.9) механизмы отрисовки графики использовали стандартные функции Windows GDI. Новые версии платформы перешли на более современные методы рендеринга (GDI+), которые по-другому обрабатывают масштабирование и сглаживание объектов.
Штрихкод в 1С чаще всего формируется как картинка через компоненту 1CBarCode или встроенную КомпонентаПечатиШтрихкодов. Основная проблема заключается в несовпадении логической плотности изображения и физического разрешения печатающей головки принтера. Если ширина штриха в пикселях получается нецелым числом (например, 2.4 точки), драйвер принтера пытается применить дизеринг (имитацию полутонов). На черно-белом термопринтере это выглядит как узор из мелких точек или «волны», которые делают границы линий нечеткими. Сканер не может распознать такие границы и отказывается считывать код.
Первым делом рассмотрим настройки самого драйвера Windows. Именно здесь происходит финальное преобразование изображения в команды для принтера. Нам необходимо заставить драйвер отказаться от любых попыток «улучшить» картинку с помощью полутонов.
Проанализируем результат: после отключения дизеринга «волны» должны исчезнуть. Однако линии могут стать либо слишком тонкими, либо слишком толстыми, если макет не оптимизирован.
Рассмотрим ситуацию, когда штрихкод выглядит четким, но все равно плохо читается. Здесь в игру вступает физика процесса термотрансферной печати. Проанализируем рекомендации службы поддержки Godex:
Если вы используете бумажные этикетки, то наиболее подходящим риббоном (красящей лентой) является тип Wax (воск) или Wax/Resin. Для таких материалов интенсивность (яркость) печати в настройках принтера должна быть в диапазоне 6–10 единиц.
Если же вы используете риббон типа Resin (смола) на бумаге, вам приходится завышать яркость до 12–14 единиц и выше. Это приводит к «пережиганию» ленты: краска расплывается, и тонкие штрихи сливаются с толстыми. Проверьте тип вашей ленты. Для стабильной работы на Godex G500 рекомендуется связка Этикетка (бумага) + Риббон (Wax).
Посмотрим на ситуацию с точки зрения программиста 1С. Чтобы избежать искажений при растеризации, размеры штрихкода в табличном документе должны быть кратны физическому размеру точки принтера.
Для принтера 203 dpi расчет следующий:
1 дюйм = 25.4 мм
25.4 мм / 203 точки ≈ 0.125 мм (размер одной точки).
Это значит, что любая линия штрихкода должна иметь ширину, кратную 0.125 мм. Если вы задаете ширину штриха вручную в свойствах компоненты, старайтесь придерживаться этих чисел. Также важно установить в параметрах печати 1С масштаб 100%, а не «По ширине страницы», так как любое масштабирование платформой неизбежно ведет к пересчету пикселей и появлению «волн».
Если стандартная печать через Windows GDI продолжает давать сбои, рассмотрим более продвинутый метод — использование библиотеки стандартных подсистем (БПО). В современных конфигурациях (УТ 11, Розница 2/3, ERP) реализована возможность печати этикеток через XML-шаблоны. При необходимости для УТ 11.5 можно воспользоваться готовым расширением для печати этикеток через БПО.
Разберем, как это работает: 1С не формирует картинку, а отправляет на принтер текстовые команды на языке EZPL (для Godex). Принтер сам генерирует штрихкод своими внутренними алгоритмами, используя встроенные шрифты. Это гарантирует идеальную четкость при любом разрешении.
Пример структуры данных, которую компонента драйвера преобразует в команды принтера:
// В БПО шаблон этикетки подготавливается в виде XML
// Принтер получает команду вида:
// ^L
// AD,1,1,1,1,0,0,EAN13,2,50,0,0,1,123456789012
// E
Этот метод исключает влияние платформы 1С на графику, так как передаются только текстовые данные и координаты.
Проанализируем еще один альтернативный способ — использование специальных шрифтов (например, EAN13.ttf). Вместо вставки картинки в ячейку табличного документа, вы вписываете туда цифры штрихкода и назначаете ячейке соответствующий шрифт.
Поскольку шрифты являются векторными объектами, драйвер принтера переводит их в точки гораздо качественнее, чем растровые изображения. Это надежный способ избавиться от артефактов печати на любой версии платформы 1С.
Подводя итог нашему исследованию, выделим основные действия для исправления «волн» на Godex G500:
Применяя эти шаги, мы обеспечим высокое качество этикеток и стабильную работу складского оборудования вне зависимости от версии используемой платформы 1С.