Как настроить масштаб и параметры страницы при печати этикеток в 1С

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

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

Анализ причин некорректного вывода этикеток

Когда мы сталкиваемся с тем, что одна этикетка разбивается на 10–15 страниц или отображается нечитаемым микрошрифтом, причиной обычно выступает комплекс факторов:

  1. Использование принтера по умолчанию для расчетов макета: если в программном коде перед обращением к параметрам страницы не указан конкретный принтер этикеток, 1С рассчитывает координаты и области макета исходя из геометрии системного принтера по умолчанию (чаще всего офисного листа формата А4).
  2. Влияние кэша параметров печати (КлючПараметровПечати): платформа 1С автоматически сохраняет и восстанавливает настройки печати (поля, ориентацию, масштаб) для каждого зарегистрированного ключа. Если однажды пользователь открыл форму с полями по 10 мм и масштабом 100%, эти сохраненные настройки будут перетирать любые программные установки свойств ПолеСлева, ПолеСверху или АвтоМасштаб.
  3. Скрытые и пустые ячейки за пределами макета: если в табличном документе изменены размеры колонок или строк далеко за пределами полезной информации, либо включен признак АвтоМасштаб = Истина, 1С пытается уместить абсолютно всю рабочую область на крошечный размер этикетки, что приводит к экстремальному уменьшению масштаба.
  4. Нестандартные размеры бумаги: установка значения ТабличныйДок.РазмерСтраницы = "Custom" в среде Windows поддерживается драйверами не всегда предсказуемо. Термопринтеры требуют выбора строго зарегистрированного формата этикетки.

Способ 1. Настройка через драйвер и интерактивное сохранение параметров

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

  1. Создадим размер этикетки в драйвере принтера: перейдем в свойства принтера в Windows (рекомендуется использовать драйверы Seagull). В настройках печати добавим новый пользовательский макет, указав точные физические размеры этикетки в миллиметрах (например, ширина 44 мм, высота 24 мм). Обратите внимание: у рулонных принтеров ширина всегда задается по ширине термоголовки (поперек ленты), а высота — по длине протяжки.
  2. Удалим лишнюю область макета: в конфигураторе или в пользовательском макете выделим все неиспользуемые столбцы справа и строки снизу, очистим их форматирование или полностью удалим.
  3. Однократно настроим параметры отображения: воспользуемся методом Показать() вместо прямой отправки на печать. В окне предварительного просмотра 1С перейдем в параметры страницы, выберем целевой принтер этикеток, укажем созданный нами формат бумаги (например, «Этикетка 24х44»), обнулим поля (поставим 0 мм) и выберем масштаб «По ширине страницы» или 100%.
  4. Сохраним результат: отправим этикетку на печать один раз вручную. Платформа 1С зафиксирует примененные параметры в пользовательском кэше для данного отчета или формы.

Способ 2. Программное управление параметрами табличного документа

Разберем, как программно гарантировать корректный вывод этикетки, исключив конфликт с кэшированными настройками и принтером А4. Главное правило — назначать имя принтера и сбрасывать сохраненные параметры ДО установки полей и размеров страницы.

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


// Инициализируем табличный документ
ТабличныйДок = Новый ТабличныйДокумент;

// 1. Очищаем ключ параметров печати, чтобы платформа не тянула старые настройки из кэша
ТабличныйДок.КлючПараметровПечати = "";

// 2. Явно назначаем имя целевого принтера в Windows
ТабличныйДок.ИмяПринтера = "Godex G500";

// 3. Указываем точное системное наименование формата бумаги из драйвера
ТабличныйДок.РазмерСтраницы = "Этикетка_24х44";

// 4. Обнуляем непечатные поля
ТабличныйДок.ПолеСверху = 0;
ТабличныйДок.ПолеСнизу  = 0;
ТабличныйДок.ПолеСлева  = 0;
ТабличныйДок.ПолеСправа = 0;

// 5. Управляем масштабом: отключаем автоужатие и задаем точный 100% масштаб
ТабличныйДок.АвтоМасштаб = Ложь;
ТабличныйДок.МасштабПечати = 100;

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

Проанализируем ключевые моменты этого кода:

  1. Присвоение КлючПараметровПечати = "" гарантирует, что 1С выполнит инструкции из кода, а не подставит пользовательские поля по 10 мм из памяти предыдущих сеансов.
  2. Явное заполнение свойства ИмяПринтера переключает внутренние алгоритмы верстки 1С на метрики термопринтера еще до того, как таблица будет выведена.
  3. Отказ от АвтоМасштаб = Истина в пользу МасштабПечати = 100 исключает сжатие шрифта из-за случайных пустых пикселей или широких границ ячеек.

Альтернативные способы печати этикеток

Если печать через табличный документ 1С продолжает вызывать сложности со смещением линий или нечеткостью мелких штрихкодов, рассмотрим альтернативные механизмы:

  1. Печать через Библиотеку подключаемого оборудования (БПО): в современных конфигурациях встроен типовой механизм работы с принтерами этикеток. В нем макет конструируется в визуальном редакторе с жесткой привязкой к миллиметрам без участия стандартных табличных документов.
  2. Использование нативного языка принтера (EZPL): принтеры Godex поддерживают язык управления командами EZPL. Сформировав текстовый пакет с командами отрисовки текста, линий и штрихкодов, мы можем отправить его напрямую в порт принтера или через системный спулер в режиме RAW. Это полностью устраняет зависимость от графической подсистемы Windows, исключает размытие штрихкодов и дает максимальную скорость печати.
← На главную