Почему штрихкод из 1С не распознается сканером при прямой печати и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При формировании печатных форм в программах 1С часто возникает ситуация: штрихкод (EAN-13, Code 128 и др.) выводится на форму, визуально выглядит четким и аккуратным, однако сканер штрихкодов или мобильное приложение отказываются его считывать. При этом, если сохранить документ в формат PDF и отправить на печать из внешнего просмотрщика, штрихкод считывается идеально. Разберем детально причины такого поведения платформы и графической подсистемы печати, а также рассмотрим пошаговые методы исправления ошибки.

Выясняем причины проблемы: почему PDF работает, а прямая печать — нет?

Проанализируем техническую сторону формирования и вывода графики в 1С:

  1. Субпиксельное искажение и несовпадение DPI: Внешняя компонента или модуль формирования штрихкодов генерируют растровое изображение с базовым экранным разрешением (обычно 96 DPI). При отправке задания на принтер через Windows GDI с разрешением 300 или 600 DPI драйверу приходится масштабировать пиксели. При некратном масштабировании толщина тонких черных штрихов и пробелов между ними (базовый модуль X-dimension) искажается: соседние линии сливаются или истончаются. При сохранении в PDF применяется векторная трансформация или алгоритмы сглаживания, сохраняющие геометрию штрихов.
  2. Дробный масштаб страницы табличного документа: Если в свойствах табличного документа или параметрах печати задана опция автоподгонки («По ширине листа» / «Уместить на одну страницу»), платформа вычисляет произвольный дробный масштаб (например, 93% или 97,5%). В результате растровый штрихкод сжимается с потерей шага линий.
  3. Влияние службы Easy Print в терминальных сессиях (RDP): При печати через перенаправленный принтер с драйвером Remote Desktop Easy Print растровые объекты нередко пережимаются с потерей исходных пропорций и контрастности, что делает штрихкод нечитаемым для обычных лазерных сканеров.

Способ 1. Корректировка размеров и свойств элемента в макете

Рассмотрим самый доступный вариант решения в конфигураторе без изменения программного кода формирования штрихкода:

  1. Откроем макет печатной формы в конфигураторе или в редакторе внешних печатных форм.
  2. Выделим объект Рисунок (картинку), в который выводится штрихкод, и перейдем в панель его свойств.
  3. Проверим свойство Размер картинки (РазмерКартинки). Вместо режимов принудительного растяжения выставим Реальный размер или аккуратно зафиксируем границы рисунка, чтобы исключить искажение пропорций по горизонтали.
  4. Убедимся, что рисунок не привязан жестко к границам ячеек, которые динамически меняют ширину при заполнении длинных текстовых строк документа.
  5. Опытным путем подберем ширину и высоту рисунка: даже изменение ширины элемента на 1–2 миллиметра может вернуть модуль штриха в целочисленную сетку пикселей, благодаря чему сканирование восстановится со 100% стабильностью.

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

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

В коде формирования печатной формы проверим и явно зафиксируем параметры страницы:


ТабличныйДокумент.АвтоМасштаб = Ложь;
ТабличныйДокумент.МасштабПечати = 100;

Если табличный документ не помещается на лист А4 по ширине при масштабе 100%, не следует использовать автоматическую подгонку ширины. Правильнее оптимизировать ширину колонок макета вручную, чтобы весь документ гарантированно укладывался в стандартную область печати без дробного сжатия.

Способ 3. Переход на векторный формат SVG или повышение DPI штрихкода

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

  1. Использование объекта ГенераторШтрихкода: В современных версиях платформы 1С:Предприятие 8.3 встроенный объект ГенераторШтрихкода позволяет получать изображение в векторном формате SVG. Векторный штрихкод идеально масштабируется под любое разрешение печатающего устройства без артефактов растеризации.
  2. Явное указание разрешения при генерации: Если формирование выполняется через механизмы БСП или внешнюю компоненту, передадим в параметры генерации разрешение, соответствующее параметрам принтера (300 или 600 DPI), вместо экранных 96 DPI.

Способ 4. Настройка драйвера принтера и параметров RDP

Проанализируем параметры операционной системы и драйвера печатающего устройства, если печать выполняется в терминальной среде:

  1. Режим передачи графики: В свойствах драйвера принтера переключим обработку графики в режим векторной печати (PCL6/PostScript), если драйвер поддерживает данную возможность.
  2. Отключение экономии тонера: Режимы Toner Save или Экономичный режим делают тонкие штрихи бледными или прерывистыми, из-за чего оптические сканеры теряют контрастность переходов. Установим стандартную плотность печати.
  3. Настройка перенаправления печати RDP: Если проблема проявляется исключительно при печати из удаленного рабочего стола через Remote Desktop Easy Print, сисадмину рекомендуется протестировать прямую установку специализированного драйвера принтера на сервере терминалов с отключением Easy Print для проблемных моделей.
← На главную