Многие пользователи и технические специалисты после обновления конфигураций «1С:Управление торговлей» с версии 11.3 на 11.4 и выше сталкиваются с неприятной проблемой: штрихкоды на этикетках и ценниках становятся размытыми, «ступенчатыми» или просто перестают считываться сканерами. Даже незначительное изменение масштаба при печати (на 1–2%) приводит к полной нечитаемости кода. Рассмотрим подробно причины этой ситуации и разберем все доступные способы решения — от простых настроек до программной корректировки работы компоненты печати.
Проанализируем техническую сторону вопроса. В современных версиях 1С:Предприятие 8.3 произошел переход от старой технологии ActiveX к новой компоненте Native API (компонента печати штрихкодов). Основная проблема «замыливания» заключается в алгоритмах интерполяции и антиалиасинга (сглаживания). Штрихкод представляет собой набор строго выверенных черных и белых полос определенной ширины в пикселях. Когда платформа пытается масштабировать эту картинку под размер ячейки в макете, возникают серые пиксели на границах полос. Сканер воспринимает эти полутона как «грязь» и не может определить четкую границу штриха.
Кроме того, критическую роль играет разрешение (DPI). Если штрихкод генерируется для стандартного мониторного разрешения (96 DPI), а печатается на термопринтере с разрешением 203 DPI или 300 DPI, происходит пересчет точек. Если ширина штриха не кратна физической точке принтера, возникает эффект «дрожания» — одни полоски становятся чуть шире других, что делает код невалидным для сканера.
Начнем с самых простых манипуляций в редакторе шаблонов этикеток и ценников, которые помогают в большинстве случаев без изменения программного кода. Выясним, какие настройки графики влияют на результат:
Если в вашей версии конфигурации в макете нет настройки Уровень четкости, мы можем добавить этот параметр принудительно через программный код. Посмотрим на пример модификации модуля менеджера обработки печати этикеток.
Нам необходимо найти процедуру, отвечающую за формирование параметров штрихкода (обычно это СформироватьПечатныеФормыЭтикетокИЦенниковТоваров в модуле менеджера обработки ПечатьЭтикетокИЦенников). Разберем, как изменить расчет ширины и высоты:
// Стандартный код:
ПараметрыШтрихкода.Вставить("Ширина", Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе));
ПараметрыШтрихкода.Вставить("Высота", Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе));
// Модифицированный код с повышением четкости:
УровеньЧеткости = 2; // Коэффициент масштабирования разрешения
ПараметрыШтрихкода.Вставить("Ширина", Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе) * УровеньЧеткости);
ПараметрыШтрихкода.Вставить("Высота", Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе) * УровеньЧеткости);
Такой подход заставляет 1С передавать в принтер более плотную картинку, что нивелирует огрехи масштабирования драйвера принтера. Чтобы избежать ручной правки модулей конфигурации, можно использовать расширение для печати этикеток на термопринтеры через БПО в УТ 11.5.
Если стандартная компонента никак не поддается настройке, можно прибегнуть к проверенному методу использования специализированных шрифтов, таких как EanGnivc. В этом случае штрихкод выводится не как картинка, а как текстовая строка.
Важный нюанс: Нельзя просто написать цифры штрихкода и назначить им шрифт. Штрихкод EAN-13 требует наличия стартовых/стоповых символов и контрольного символа, рассчитанного по особому алгоритму. Для реализации этого метода выполним следующие шаги:
EanGnivc в операционную систему на сервере и рабочих станциях.EanGnivc.МенеджерОборудованияВызовСервера.СформироватьТекстШтрихкодаEAN13).Зачастую проблема кроется не в 1С, а в том, как драйвер принтера обрабатывает поступающую графику. Проанализируем настройки печати:
Во-первых, всегда проверяйте Масштаб страницы в диалоге печати 1С. Он должен быть строго 100%. Любое использование опции «По ширине страницы» или ручное изменение масштаба (даже на 101%) мгновенно «ломает» сетку штрихкода. Размеры этикетки нужно подгонять физическим размером ячеек в макете, а не масштабированием при печати.
Во-вторых, зайдите в настройки драйвера вашего принтера (Zebra, TSC, Xprinter и др.):
Подведем итог нашему исследованию. Если после обновления УТ 11 вы столкнулись с плохой печатью штрихкодов, рекомендуем действовать в следующем порядке:
1С:Предприятие до актуальной (не ниже 8.3.15) и конфигурацию до последней версии — разработчики 1С постоянно выпускают патчи для компоненты печати.EanGnivc, предварительно программно подготовив строку кода.Применяя эти методы в комплексе, мы добьемся идеальной читаемости этикеток на любом торговом оборудовании.