Как реализовать собственную печать этикеток со штрихкодами на термопринтере в 1С?

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

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

Принцип работы термопринтера в 1С

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

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

Настройка параметров табличного документа

Проанализируем типовые ошибки при верстке макета под термоэтикетку. Если при печати на лист А4 небольшие поля страницы незаметны, то на этикетке размером 58х40 мм стандартные отступы приведут к сдвигу изображения и пропуску пустых этикеток.

Рассмотрим ключевые свойства объекта ТабличныйДокумент, которые необходимо программно инициализировать перед выводом на печать:

  1. Обнуление полей страницы: в кодовой части обязательно задаем нулевые отступы со всех четырех сторон: ПолеСлева = 0, ПолеСправа = 0, ПолеСверху = 0, ПолеСнизу = 0.
  2. Отключение автомасштабирования: свойству АвтоМасштаб присваиваем значение Ложь, а параметр МасштабПечати фиксируем на 100%. Если оставить автомасштаб включенным, платформа может произвольно сжать или растянуть штрихкод, из-за чего нарушатся пропорции штрихов и код перестанет читаться сканером.
  3. Разделители страниц при пакетной печати: если в один документ выводится сразу несколько этикеток, между ними необходимо программно добавлять разделитель с помощью метода ВывестиГоризонтальныйРазделительСтраниц(). Высота ячеек в макете должна строго соответствовать высоте физической этикетки.
  4. Управление параметрами печати: свойство ИмяПараметровПечати сохраняет пользовательские настройки принтера в кэше 1С. При смене размера макета или переходе на другой формат этикетки старый кэш может сбивать печать, поэтому для уникальных макетов рекомендуется задавать индивидуальное имя параметров.

Посмотрим на пример программного формирования табличного документа для термопечати:


ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЭТИКЕТКА_58х40";
ТабДок.АвтоМасштаб = Ложь;
ТабДок.МасштабПечати = 100;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

Макет = ПолучитьМакет("МакетЭтикетки");
ОбластьЭтикетка = Макет.ПолучитьОбласть("Этикетка");

Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
    ОбластьЭтикетка.Параметры.Заполнить(СтрокаТовара);
    // Вывод штрихкода в область макета
    ТабДок.Вывести(ОбластьЭтикетка);
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

Способы формирования штрихкодов в макете

Для отображения читаемых штрихкодов в табличном документе применяются два основных подхода:

  1. Встроенная нативная компонента печати штрихкодов 1С: компонента генерирует графическое изображение штрихкода (EAN13, Code 128, QR-код, DataMatrix) и помещает его в объект типа «Рисунок» табличного документа. Это наиболее универсальный способ, поддерживающий стандарты маркировки «Честный ЗНАК».
  2. Специализированные TrueType шрифты: в ячейку макета выводится обычная текстовая строка, для которой задан шрифт штрихкода (например, шрифты семейства EAN или Code 128). Преимущество шрифтов заключается в четких векторных границах линий без растрового размытия, однако перед выводом строки требуется программно рассчитать и добавить контрольный символ контрольной суммы.

Настройка драйвера и калибровка принтера

Выясним причину, по которой макет может правильно отображаться на экране, но некорректно выводиться на термопринтере. Чаще всего проблема кроется в настройках операционной системы:

  1. Пользовательский формат бумаги: в свойствах принтера в Windows необходимо создать пользовательский размер страницы, точно соответствующий размерам этикетки (например, 58x40 мм или 43x25 мм), и сделать его форматом по умолчанию.
  2. Тип датчика носителя: в параметрах драйвера необходимо правильно указать способ определения начала этикетки — по зазору (Gap), по черной метке (Black Mark) или сплошная лента (Continuous).
  3. Калибровка: при установке нового рулона этикеток обязательно выполняем аппаратную калибровку принтера, чтобы датчик точно определял границы между наклейками.

Альтернативный вариант: прямая печать командами принтера (ZPL, TSPL)

Если печать через графический табличный документ 1С работает слишком медленно при больших тиражах либо растровые штрихкоды смазываются из-за низкого разрешения термоголовки (203 DPI), рассмотрим альтернативный подход — прямую отправку команд на языке управления принтером (например, ZPL для Zebra или TSPL для TSC/Xprinter).

В этом случае из 1С формируется текстовый блок команд, где указываются координаты элементов, тип и значение штрихкода. Команды отправляются напрямую в порт устройства (USB, COM или TCP) или через режим RAW драйвера печати. Принтер генерирует штрихкод на аппаратном уровне, что обеспечивает максимальную резкость линий и высокую скорость печати.

← На главную