Как распечатать штрихкод вертикально в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке этикеток и печатных форм часто возникает необходимость компактно разместить информацию, и оптимальным решением становится вертикальная ориентация штрихкода. Однако разработчики сталкиваются с тем, что стандартные средства не всегда очевидно позволяют повернуть изображение, либо при повороте оно становится нечитаемым для сканера. Давайте подробно разберем, как решить эту задачу в 1С, проанализируем различные подходы и выясним причины аппаратных ограничений.

Использование актуальной компоненты печати штрихкодов (БПО)

Если мы работаем в современных конфигурациях (например, ERP, УТ 11, КА 2), где встроена «Библиотека подключаемого оборудования» (БПО), мы можем воспользоваться штатным программным интерфейсом генерации картинки. Новая компонента NativeAPI отлично справляется с вращением штрихкодов (EAN-13, Code128, ITF-14, QR и других).

Рассмотрим по шагам, как получить повернутую картинку для макета. Нам необходимо подготовить структуру параметров, где важнейшим свойством будет УголПоворота. Задаем его значение равным 90 или 270 градусам.

Посмотрим на пример реализации в коде:


ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 100);
ПараметрыШтрихкода.Вставить("Высота", 200);
ПараметрыШтрихкода.Вставить("Штрихкод", "1234567890128");
ПараметрыШтрихкода.Вставить("ТипКода", 1); // EAN13
ПараметрыШтрихкода.Вставить("УголПоворота", 270);

// Получаем картинку с помощью серверного вызова
КартинкаШК = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

// Выводим в табличный документ
ОбластьМакета.Рисунки.ИмяРисунка.Картинка = КартинкаШК;

Этот метод генерирует качественное изображение, которое уже повернуто нужным образом, и нам остается лишь поместить его в элемент типа Рисунок на макете табличного документа.

Печать штрихкода как текста со специальным шрифтом

Проанализируем альтернативный подход. В чем проблема просто написать штрихкод текстом? Существуют специальные шрифты (например, EanGnivc, различные вариации ITF-14 или Code39), которые преобразуют символы в графические полосы. Текст в ячейке табличного документа 1С можно легко повернуть на 90 градусов в свойствах самой ячейки (свойство ОриентацияТекста).

  1. Добавляем в макет ячейку (или текстовое поле).
  2. Устанавливаем для нее шрифт штрихкода.
  3. В свойствах ячейки задаем поворот текста на 90 или 270 градусов.
  4. Передаем в ячейку строку, предварительно сформированную по правилам выбранного стандарта (некоторые штрихкоды требуют расчета контрольного символа или служебных символов старта/стопа).

Это быстрый способ, но он требует обязательной установки соответствующего шрифта на компьютере пользователя или сервере, где формируется печатная форма.

Физика термопечати: «Штакетник» против «Лестницы»

Очень важно обсудить техническую особенность аппаратной печати, с которой часто сталкиваются разработчики. Почему штрихкод, распечатанный вертикально, сканер может не прочитать?

В терминологии маркировки печать горизонтального штрихкода называется «штакетник» (picket fence), а вертикального — «лестница» (ladder). Термоголовка принтера имеет ряд фиксированных нагревательных элементов. При горизонтальной печати полосы формируются непрерывно и получаются идеально ровными.

При вертикальной печати («лестницей») ровность и толщина линий напрямую зависят от скорости вращения шагового двигателя принтера, протягивающего ленту. Если механика принтера недорогая или изношена, возникает микро-смещение, и прямые линии превращаются в "пилу" (микро-зигзаги), из-за чего сканер не может распознать ширину штриха.

Практическое решение: если вам необходимо печатать штрихкод вертикально, и он плохо читается, зайдите в настройки драйвера принтера. Снизьте скорость печати до минимума и немного увеличьте температуру нагрева термоголовки. Это значительно повысит резкость и стабильность линий.

Печать командами принтера (ZPL, EPL)

Чтобы избежать искажений картинки при передаче макета из 1С драйверу Windows, профессиональным решением является использование нативных языков разметки принтеров (например, ZPL для Zebra). Мы формируем не табличный документ, а текстовый файл с командами.

В языках принтеров есть встроенные параметры ориентации. Например, в ZPL при вызове команды штрихкода достаточно указать букву направления (N - normal, R - rotated 90, I - inverted 180, B - bottom-up 270). Принтер сам сгенерирует идеальное изображение линий на аппаратном уровне. Отправив такой текстовый документ напрямую на порт принтера, мы гарантируем идеальное качество печати повернутого штрихкода.

Использование поля HTML-документа и переход на 2D

Разберем еще несколько современных вариантов.

В некоторых случаях для отображения этикеток на экране используют Поле HTML-документа. Внутри HTML-макета можно подключить JavaScript библиотеку (например, JsBarcode) и сгенерировать штрихкод, а его поворот осуществить простейшим CSS-правилом: transform: rotate(90deg).

Также стоит отметить глобальный тренд на использование двумерных штрихкодов, таких как DataMatrix (активно применяется для обязательной маркировки Честный ЗНАК). Для 2D-сканеров угол поворота матрицы абсолютно не имеет значения. Более того, матричные коды состоят из квадратных модулей, которые гораздо меньше страдают от эффекта "лестницы" шагового двигателя принтера при печати с поворотом, чем длинные и тонкие линии классических 1D-кодов.

← На главную