При работе с термотрансферными принтерами начального уровня (с разрешением 203 dpi) пользователи часто сталкиваются с проблемой: штрихкод на маленьких этикетках (например, 30x20 мм) получается либо слишком мелким, либо «замыленным», из-за чего сканеры отказываются его считывать. Попытки просто растянуть объект штрихкода в макете 1С обычно не приносят результата, так как компонента печати живет по своим правилам масштабирования. В этой статье мы подробно разберем, как добиться идеальной печати штрихкода, проанализируем технические причины искажений и настроим систему для качественного результата.
Прежде чем переходить к настройкам 1С, давайте разберем математику процесса. Разрешение 203 dpi означает, что на одном дюйме (25.4 мм) принтер может напечатать 203 точки. Следовательно, ширина одной точки составляет примерно 0,125 мм. Штрихкод типа EAN-13 состоит из 95 модулей (вертикальных полосок одинаковой ширины).
Для того чтобы штрихкод был читаемым, ширина одного модуля (самой тонкой линии) должна быть строго кратна физической точке принтера — 1, 2 или 3 пикселя. Если компонента 1С пытается растянуть штрихкод так, что на один модуль приходится, например, 1.5 пикселя, принтер начинает округлять значения. В итоге одна полоса получается шириной в 1 точку, а соседняя — в 2 точки. Визуально это выглядит как «слипшиеся» черточки или разная толщина линий, что фатально для сканера.
Рассчитаем минимальную ширину EAN-13 при 203 dpi:
Учитывая, что по бокам штрихкода должны быть «зоны тишины» (пустое пространство), размер в 23,75 мм идеально вписывается в этикетку шириной 30 мм. Наша задача — заставить 1С вывести штрихкод именно в таком «честном» размере.
Рассмотрим основной механизм управления отображением штрихкода в макете. Обычное растягивание рамки мышкой в редакторе макета часто приводит к тому, что платформа 1С просто масштабирует картинку как обычный рисунок, теряя четкость линий.
Выполним следующие шаги в макете этикетки:
ОтображатьТекст. Если штрихкод очень мелкий, рекомендуется отключить вывод цифр под кодом. Это позволит увеличить высоту черточек, что значительно повысит шансы на успешное сканирование поврежденных или плохо пропечатанных этикеток.ТипРазмера (или SizeMode). Установим его в значение «Реальный размер». В этом режиме компонента игнорирует границы рамки, которую вы нарисовали, и выводит штрихкод «пиксель в пиксель» в соответствии с его внутренними алгоритмами.Проанализируем ситуацию: если после установки «Реального размера» штрихкод стал очень маленьким, значит, компонента выбрала масштаб 1 пиксель на модуль. Попробуем изменить параметр Масштаб (Scale) в свойствах объекта, если он доступен, установив значение кратное 100 (например, 200%).
Иногда штрихкод не растягивается из-за того, что в самой программе 1С:Розница заданы жесткие отступы (поля) страницы. Даже если вы прижали штрихкод к краю макета, система при формировании печатной формы может сжать его, чтобы втиснуть в невидимые рамки. Проанализируем, как это исправить в коде обработки печати.
Нам необходимо найти процедуру, которая формирует ТабличныйДокумент для этикеток, и убедиться, что поля установлены в ноль. Рассмотрим пример кода:
// В модуле обработки печати этикеток
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЭТИКЕТКА_30Х20";
// Устанавливаем поля в 0, чтобы использовать всю ширину ленты
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
// Запрещаем автоматическое масштабирование платформой
ТабДок.АвтоМасштаб = Ложь;
Эти настройки гарантируют, что 1С передаст на принтер изображение именно в том виде, в котором его сформировала компонента, без принудительного уменьшения.
Часто корень проблемы кроется в настройках самого Windows-драйвера принтера этикеток. Даже идеальная картинка из 1С может быть испорчена драйвером в момент растрирования. Выясним, какие параметры нужно проверить:
Если стандартная компонента 1С:Печать штрихкодов всё равно не дает нужного результата, разберем более продвинутые варианты.
Вместо графического объекта можно использовать специальный шрифт, например, EAN13.ttf или Code128.ttf. В этом случае мы выводим штрихкод как обычную текстовую строку в ячейке макета. Это дает нам полный контроль над размером через кегль шрифта. Принтер воспринимает такой код как векторные данные, что обеспечивает максимальную четкость на любом разрешении.
Если бизнес-процессы позволяют, рассмотрим возможность смены формата штрихкодирования для малогабаритных товаров:
EAN-13 (всего 67 модулей против 95). Он идеально встает на этикетку 30 мм даже с большим запасом по четкости.Интересная особенность термопринтеров: иногда вертикальный штрихкод (повернутый на 90 градусов относительно движения ленты) печатается хуже, чем горизонтальный. Это связано с тем, что для печати вертикальных линий печатающая головка должна мгновенно включаться и выключаться. Если повернуть штрихкод вдоль направления движения ленты, головка будет держать нагрев постоянно для каждой линии, что исключит влияние задержек электроники. Попробуйте изменить параметр УголПоворота в свойствах компоненты на 90 или 270 градусов.
Подводя итог, скажем: для этикетки 30x20 мм в 1С:Розница 2.2 секрет успеха кроется в сочетании «Реального размера» в макете, обнуления полей в коде ТабличногоДокумента и отключении дизеринга в драйвере принтера. Проанализировав все эти факторы, вы добьетесь стабильного считывания штрихкодов даже самым бюджетным сканером.