Работа с печатью этикеток в 1С:УНФ часто преподносит сюрпризы, особенно когда стандартный горизонтальный макет не подходит под требования бизнеса или технические особенности оборудования. Проблема с поворотом элементов на 90 или 270 градусов — классическая задача, с которой сталкиваются многие разработчики и администраторы. Разберем подробно, почему возникают сложности с форматированием текста и «расплывающимся» штрихкодом, и как добиться идеальной печати «от края до края».
Прежде чем переходить к техническим решениям, проанализируем ситуацию, зачем вообще нужно разворачивать штрихкод вертикально. Существует неоспоримый технологический плюс: на печатной головке термопринтера со временем может скапливаться мусор, или отдельные дюзы могут «выгорать». При горизонтальной печати штрихкода (когда линии параллельны движению ленты) любая неисправная точка на головке создаст белую полосу вдоль всего штрихкода, что сделает его нечитаемым для сканера. Если же мы развернем штрихкод на 90 градусов, полоса от дефектной головки пройдет поперек линий, что в большинстве случаев не помешает сканеру считать код. Именно поэтому вертикальная ориентация часто является предпочтительной для промышленной маркировки.
При повороте текстового поля в табличном документе 1С на 270 градусов часто нарушается логика выравнивания. Выясним причину: графический движок 1С при изменении ориентации текста инвертирует свойства ВертикальноеВыравнивание и ГоризонтальноеВыравнивание. То, что для нас кажется «верхом» после поворота, для системы может оставаться «правым краем».
Рассмотрим по шагам, как это исправить:
РазмещениеТекста. Для многострочных наименований установим значение «Переносить».Главная сложность в 1С:УНФ — это управление размером и шрифтом штрихкода внутри графического объекта. Часто настройки шрифта подставляются произвольно, а сам штрихкод не растягивается на всю ширину выделенной области. Посмотрим на методы решения этой задачи.
Проанализируем настройки компоненты печати штрихкодов. В макете этикетки выделим объект штрихкода и перейдем в его свойства:
1CBarCode поля (отступы) установлены в значение «0».Если типовые средства не позволяют добиться нужного качества, рассмотрим вариант программного формирования картинки штрихкода. Мы можем сформировать штрихкод в памяти, развернуть его и вставить в макет как готовый объект типа РисунокТабличногоДокумента.
Пример логики формирования может выглядеть следующим образом:
ПараметрыШтрихкода = ГенераторШтрихкода.ПолучитьПараметры();
ПараметрыШтрихкода.ТипКода = 1; // EAN13
ПараметрыШтрихкода.УголПоворота = 90;
ПараметрыШтрихкода.Ширина = 400;
ПараметрыШтрихкода.Высота = 200;
КартинкаШтрихкода = МенеджерПечати.СформироватьИзображениеШтрихкода(ПараметрыШтрихкода);
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = КартинкаШтрихкода;
Иногда самый простой способ — это «обмануть» 1С. Рассмотрим этот вариант подробнее. Вместо того чтобы мучиться с поворотом элементов в макете, мы создаем обычный горизонтальный макет, который в 1С выглядит идеально. А задачу поворота перекладываем на драйвер принтера этикеток.
Выполним следующие действия:
В этом случае 1С отправляет данные как стандартную страницу, а процессор принтера сам разворачивает изображение перед подачей на термоголовку. Это гарантирует сохранение всех пропорций и шрифтов.
Важно помнить, что физическое разрешение головки принтера (обычно 203 dpi, 300 dpi или 600 dpi) диктует правила формирования штрихкода. При повороте в 1С линии могут попадать «между пикселями» принтера, из-за чего возникает эффект размытости или разной толщины линий. Для решения этой проблемы старайтесь подбирать размер штрихкода так, чтобы ширина одной полоски была кратна физической точке принтера. Это достигается только путем многочисленных тестов и изменения размера объекта в макете на 1-2 миллиметра.
Если графическая компонента продолжает вести себя нестабильно, разберем альтернативный метод — использование специальных шрифтов (например, Code39 или EAN13.ttf). В этом случае штрихкод для 1С — это просто строка текста.
Преимущества этого метода:
ГоризонтальноеВыравнивание.Подводя итог, можно сказать, что для достижения идеального результата в 1С:УНФ при печати вертикальных этикеток лучше всего комбинировать программную настройку макета с правильной конфигурацией драйвера принтера. Проанализируйте состояние вашего оборудования и выберите наиболее подходящий метод из предложенных выше. При необходимости можно воспользоваться готовой печатной формой ценников и этикеток для термопринтера.