При разработке собственных обработок или внешних печатных форм для маркировки товаров часто возникает вопрос: отличается ли вывод данных на специализированный термопринтер этикеток от классической печати документов на листах А4. Разберем по шагам, как устроен этот процесс в платформе 1С, какие настройки табличного документа критически важны и какие подводные камни могут встретиться при формировании штрихкодов.
С точки зрения платформы 1С печать на принтер этикеток практически не отличается от печати на обычный офисный принтер. Программа формирует объект ТабличныйДокумент на основе макета и отправляет его в графическую подсистему операционной системы. Драйвер устройства принимает сформированное изображение страницы и транслирует его в команды термоголовки.
Таким образом, для создания собственной системы печати этикеток достаточно разработать внешнюю обработку или печатную форму с макетом нужного размера. Однако из-за специфики рулонных носителей и малых физических габаритов этикеток необходимо строго соблюдать правила верстки макета и настройки параметров печати.
Проанализируем типовые ошибки при верстке макета под термоэтикетку. Если при печати на лист А4 небольшие поля страницы незаметны, то на этикетке размером 58х40 мм стандартные отступы приведут к сдвигу изображения и пропуску пустых этикеток.
Рассмотрим ключевые свойства объекта ТабличныйДокумент, которые необходимо программно инициализировать перед выводом на печать:
ПолеСлева = 0, ПолеСправа = 0, ПолеСверху = 0, ПолеСнизу = 0.АвтоМасштаб присваиваем значение Ложь, а параметр МасштабПечати фиксируем на 100%. Если оставить автомасштаб включенным, платформа может произвольно сжать или растянуть штрихкод, из-за чего нарушатся пропорции штрихов и код перестанет читаться сканером.ВывестиГоризонтальныйРазделительСтраниц(). Высота ячеек в макете должна строго соответствовать высоте физической этикетки.ИмяПараметровПечати сохраняет пользовательские настройки принтера в кэше 1С. При смене размера макета или переходе на другой формат этикетки старый кэш может сбивать печать, поэтому для уникальных макетов рекомендуется задавать индивидуальное имя параметров.Посмотрим на пример программного формирования табличного документа для термопечати:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЭТИКЕТКА_58х40";
ТабДок.АвтоМасштаб = Ложь;
ТабДок.МасштабПечати = 100;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = ПолучитьМакет("МакетЭтикетки");
ОбластьЭтикетка = Макет.ПолучитьОбласть("Этикетка");
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ОбластьЭтикетка.Параметры.Заполнить(СтрокаТовара);
// Вывод штрихкода в область макета
ТабДок.Вывести(ОбластьЭтикетка);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
Для отображения читаемых штрихкодов в табличном документе применяются два основных подхода:
Выясним причину, по которой макет может правильно отображаться на экране, но некорректно выводиться на термопринтере. Чаще всего проблема кроется в настройках операционной системы:
Если печать через графический табличный документ 1С работает слишком медленно при больших тиражах либо растровые штрихкоды смазываются из-за низкого разрешения термоголовки (203 DPI), рассмотрим альтернативный подход — прямую отправку команд на языке управления принтером (например, ZPL для Zebra или TSPL для TSC/Xprinter).
В этом случае из 1С формируется текстовый блок команд, где указываются координаты элементов, тип и значение штрихкода. Команды отправляются напрямую в порт устройства (USB, COM или TCP) или через режим RAW драйвера печати. Принтер генерирует штрихкод на аппаратном уровне, что обеспечивает максимальную резкость линий и высокую скорость печати.