Как настроить печать вертикальных этикеток и штрихкодов в 1С:УНФ без искажений?

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

Работа с печатью этикеток в 1С:УНФ часто преподносит сюрпризы, особенно когда стандартный горизонтальный макет не подходит под требования бизнеса или технические особенности оборудования. Проблема с поворотом элементов на 90 или 270 градусов — классическая задача, с которой сталкиваются многие разработчики и администраторы. Разберем подробно, почему возникают сложности с форматированием текста и «расплывающимся» штрихкодом, и как добиться идеальной печати «от края до края».

Почему возникает необходимость поворота штрихкода?

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

Разбор проблемы 1: Форматирование многострочного текста

При повороте текстового поля в табличном документе 1С на 270 градусов часто нарушается логика выравнивания. Выясним причину: графический движок 1С при изменении ориентации текста инвертирует свойства ВертикальноеВыравнивание и ГоризонтальноеВыравнивание. То, что для нас кажется «верхом» после поворота, для системы может оставаться «правым краем».

Рассмотрим по шагам, как это исправить:

  1. Проверим свойство ячейки РазмещениеТекста. Для многострочных наименований установим значение «Переносить».
  2. Экспериментальным путем подберем комбинацию выравниваний. Если при повороте на 270 градусов текст прижимается к низу вместо верха, попробуйте установить вертикальное выравнивание «По центру» или изменить горизонтальное выравнивание на противоположное.
  3. Используйте фиксированную высоту строк. Если область текста динамически расширяется, это может приводить к непредсказуемому смещению строк при повороте.

Разбор проблемы 2: Штрихкод «от края до края» и его читаемость

Главная сложность в 1С:УНФ — это управление размером и шрифтом штрихкода внутри графического объекта. Часто настройки шрифта подставляются произвольно, а сам штрихкод не растягивается на всю ширину выделенной области. Посмотрим на методы решения этой задачи.

Метод 1: Настройка свойств графического объекта

Проанализируем настройки компоненты печати штрихкодов. В макете этикетки выделим объект штрихкода и перейдем в его свойства:

Метод 2: Программная подготовка изображения

Если типовые средства не позволяют добиться нужного качества, рассмотрим вариант программного формирования картинки штрихкода. Мы можем сформировать штрихкод в памяти, развернуть его и вставить в макет как готовый объект типа РисунокТабличногоДокумента.

Пример логики формирования может выглядеть следующим образом:


ПараметрыШтрихкода = ГенераторШтрихкода.ПолучитьПараметры();
ПараметрыШтрихкода.ТипКода = 1; // EAN13
ПараметрыШтрихкода.УголПоворота = 90;
ПараметрыШтрихкода.Ширина = 400;
ПараметрыШтрихкода.Высота = 200;

КартинкаШтрихкода = МенеджерПечати.СформироватьИзображениеШтрихкода(ПараметрыШтрихкода);
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = КартинкаШтрихкода;

Метод 3: Использование драйвера принтера

Иногда самый простой способ — это «обмануть» 1С. Рассмотрим этот вариант подробнее. Вместо того чтобы мучиться с поворотом элементов в макете, мы создаем обычный горизонтальный макет, который в 1С выглядит идеально. А задачу поворота перекладываем на драйвер принтера этикеток.

Выполним следующие действия:

  1. Зайдем в «Устройства и принтеры» в Windows.
  2. Откроем «Настройки печати» (Printing Preferences) вашего принтера (Zebra, Xprinter, Godex).
  3. Найдите параметр «Ориентация» (Orientation) и установите значение «Ландшафтная» (Landscape) или «Поворот на 90 градусов».
  4. В самой 1С:УНФ при печати убедитесь, что в параметрах страницы не стоит принудительный портретный режим.

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

Особенности работы с разрешением (DPI)

Важно помнить, что физическое разрешение головки принтера (обычно 203 dpi, 300 dpi или 600 dpi) диктует правила формирования штрихкода. При повороте в 1С линии могут попадать «между пикселями» принтера, из-за чего возникает эффект размытости или разной толщины линий. Для решения этой проблемы старайтесь подбирать размер штрихкода так, чтобы ширина одной полоски была кратна физической точке принтера. Это достигается только путем многочисленных тестов и изменения размера объекта в макете на 1-2 миллиметра.

Использование шрифтов штрихкода как альтернатива

Если графическая компонента продолжает вести себя нестабильно, разберем альтернативный метод — использование специальных шрифтов (например, Code39 или EAN13.ttf). В этом случае штрихкод для 1С — это просто строка текста.

Преимущества этого метода:

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

← На главную