К статье
Практический материал

Документы и Печать · 11 мин

Как установить двухмерный штрихкод PDF417 в 1С

Как установить и подключить двухмерный штрихкод PDF417 в 1С: регистрация компоненты Barcode.ocx, настройка макета, проверка печати и решение типичных ошибок.

Двухмерный штрихкод PDF417 в 1С чаще всего требуется для печати налоговых деклараций, платёжных документов и других регламентированных форм, где данные должны считываться сканером при приёме. В отличие от линейных кодов (EAN-13, Code 39), PDF417 вмещает значительно больше информации и выводится через специальную компоненту, а не шрифтом.

Основной способ вывода PDF417 в 1С — внешняя компонента Barcode.ocx (в типовых конфигурациях она называется «1С:Библиотека печати штрихкодов» либо входит в состав БСП как макет «КомпонентаПечатиШтрихкодов»). Компонента поддерживает PDF417 начиная с определённых версий, поэтому задача сводится к трём шагам: получить подходящую версию компоненты, зарегистрировать её в системе и правильно вызвать из конфигурации.

Ниже разобран весь процесс: от проверки наличия компоненты до контроля качества печати, а также типичные ошибки, из-за которых штрихкод не выводится или не читается сканером.

Что нужно проверить перед установкой

Прежде чем устанавливать что-либо, определите, как устроена ваша конфигурация. В типовых решениях на базе Библиотеки стандартных подсистем (УТ, ERP, Бухгалтерия, ЗУП) компонента печати штрихкодов обычно уже включена в поставку в виде макета и подключается автоматически при первом обращении. В самописных и сильно доработанных конфигурациях её может не быть — тогда потребуется ручная установка.

Второй момент — версия компоненты. Поддержка PDF417 появилась не в самых ранних редакциях Barcode.ocx. Если компонента устанавливалась много лет назад и не обновлялась, в перечне типов штрихкодов PDF417 может отсутствовать. Проверить это можно, открыв свойства компоненты или попытавшись программно задать тип кода — устаревшая версия вернёт ошибку или проигнорирует значение.

Третий момент — разрядность. Компонента Barcode.ocx исторически 32-разрядная. Если у пользователей установлен 64-разрядный клиент 1С, компонента может не загрузиться. Практическое решение — использовать 32-разрядный тонкий или толстый клиент на рабочих местах, где печатаются формы с PDF417, либо выполнять формирование на сервере с установленной компонентой соответствующей разрядности.

PDF417 есть в списке типовКомпонента актуальная

Достаточно правильно вызвать её из кода или макета

PDF417 в списке нетУстаревшая версия Barcode.ocx

Нужно обновить компоненту до версии с поддержкой двухмерных кодов

Ошибка загрузки внешней компонентыНесовпадение разрядности или компонента не зарегистрирована

Проверить битность клиента и регистрацию OCX в системе

Штрихкод печатается, но не читаетсяПроблема качества печати или содержимого

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

Установка и регистрация компоненты Barcode.ocx

Если компоненты в конфигурации нет, её нужно установить вручную. Файл Barcode.ocx распространялся в составе поставок типовых конфигураций и дополнений к ним. Скопируйте файл в системный каталог Windows (для 32-разрядной компоненты на 64-разрядной системе — в папку SysWOW64) и зарегистрируйте её командой regsvr32 от имени администратора.

cmd
regsvr32 C:\Windows\SysWOW64\Barcode.ocx

После регистрации система должна сообщить об успешном выполнении. Если появляется ошибка — чаще всего причина в недостатке прав (нужен запуск командной строки от имени администратора) или в том, что файл заблокирован антивирусом либо скачан из недоверенного источника и повреждён.

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

Подключение компоненты в типовых конфигурациях

В конфигурациях на БСП ручная регистрация обычно не нужна: компонента хранится в макете и подключается программно. Типовой код подключения выглядит как обращение к общему модулю работы с штрихкодами или как прямое подключение внешней компоненты из макета через ПодключитьВнешнююКомпоненту и создание объекта Новый COMОбъект либо объекта внешней компоненты.

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

Для самописной конфигурации можно добавить макет с компонентой вручную: создать макет типа «Двоичные данные», загрузить в него файл компоненты и в коде подключать её из этого макета. Такой подход удобен тем, что компонента распространяется вместе с конфигурацией и не требует отдельной установки на каждом компьютере.

Вывод PDF417 в табличный документ

Вывод штрихкода в печатную форму выполняется через элемент табличного документа типа «Рисунок». В макете добавьте область с рисунком, а в коде после создания объекта компоненты задайте его свойства: тип штрихкода (значение, соответствующее PDF417), строку данных и размеры. Затем присвойте рисунку табличного документа картинку, полученную из компоненты.

Строка данных для PDF417 формируется по правилам конкретной формы. Например, для налоговых деклараций состав и порядок полей в строке строго регламентированы приёмным ПО: нарушение порядка полей или разделителей приводит к тому, что штрихкод визуально есть, но при приёме не читается. Берите формат строки из документации к конкретной форме, а не «по аналогии».

Обратите внимание на объём данных: чем больше символов кодируется, тем плотнее матрица PDF417 и тем выше требования к качеству печати. Если в код помещается длинная строка, заранее предусмотрите достаточный размер рисунка в макете — при сжатии мелкие элементы сливаются, и сканер перестаёт распознавать код.

Порядок действий
  1. 1
    Проверьте наличие и версию компоненты печати штрихкодов в конфигурации
  2. 2
    При отсутствии — зарегистрируйте Barcode.ocx командой regsvr32 от имени администратора
  3. 3
    Подключите компоненту в коде и создайте объект
  4. 4
    Установите тип штрихкода PDF417 и передайте строку данных по регламенту формы
  5. 5
    Выведите картинку в рисунок табличного документа с достаточным размером
  6. 6
    Распечатайте тестовый экземпляр и проверьте чтение сканером

Проверка результата и качества печати

Окончательный критерий правильной установки — читаемость штрихкода реальным сканером, а не его наличие на бумаге. Проверяйте чтение на том же оборудовании, которым будет сканироваться документ при использовании: двухмерный сканер обязателен, линейный (одномерный) сканер PDF417 не считает в принципе.

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

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

Контрольные точки

Как проверить результат

Чтение сканером
Норма

Двухмерный сканер считывает код и выдаёт строку данных полностью

Тревожный признак

Сканер не реагирует или выдаёт обрыв строки

Внешний вид кода
Норма

Модули чёткие, с ровными границами, без слипшихся участков

Тревожный признак

Размытые края, полосы, бледные фрагменты

Содержимое строки
Норма

Считанная строка совпадает с переданной посимвольно, включая разделители

Тревожный признак

Пропущены поля или изменён порядок данных

Повторная печать
Норма

Код читается стабильно при нескольких распечатках

Тревожный признак

Читаемость зависит от конкретного отпечатка

Типичные ошибки и их устранение

Самая распространённая проблема — ошибка «Не удалось подключить внешнюю компоненту» при вроде бы установленном Barcode.ocx. В большинстве случаев это несовпадение разрядности: 64-разрядный клиент не может загрузить 32-разрядную OCX. Проверьте, какой клиент запускается, и при необходимости настройте ярлык на 32-разрядное приложение.

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

Третья группа — права и безопасность. На сервере компонента может блокироваться политиками, а в веб-клиенте работа с локальными OCX ограничена в принципе: для веб-клиента штрихкод нужно формировать на сервере и передавать в браузер готовой картинкой.

Типичные ошибки
01
Регистрация OCX в System32 вместо SysWOW64 на 64-разрядной Windows — компонента не находится 32-разрядным приложением
02
Использование старой версии Barcode.ocx без поддержки PDF417 — тип кода недоступен, код молча подменяется другим
03
Уменьшение рисунка штрихкода в макете для экономии места — сканер перестаёт читать плотную матрицу
04
Формирование строки данных «на глаз» без регламента формы — код есть, но при приёме документа отклоняется
05
Проверка только на экране без распечатки — на бумаге выявляются дефекты печати, невидимые в предпросмотре

Альтернативные способы вывода PDF417

Если штатная компонента по каким-то причинам не подходит, существуют обходные варианты. Один из них — формирование изображения PDF417 внешними средствами (например, серверным скриптом или сторонней библиотекой генерации штрихкодов) и вставка готовой картинки в табличный документ. Это снимает зависимость от разрядности клиента и работает в веб-клиенте.

Другой вариант — использование регламентированных отчётов, где двухмерный штрихкод уже встроен разработчиками конфигурации: в актуальных типовых решениях печать деклараций с PDF417 реализована из коробки, и ничего устанавливать отдельно не нужно — достаточно обновить конфигурацию.

Сравнение вариантов

Штатная компонента из БСП

Подходит для типовых конфигураций; ограничение — зависимость от версии макета и разрядности клиента

Ручная регистрация Barcode.ocx

Подходит для самописных конфигураций и старых платформ; требует установки на каждое рабочее место

Внешняя генерация картинки

Подходит для веб-клиента и серверного формирования; требует дополнительной разработки и поддержки

Часто задаваемые вопросы

Можно ли вывести PDF417 шрифтом, как линейный штрихкод?

Нет. PDF417 — двухмерный стековый код, он не представляется последовательностью символов шрифта. Для его вывода нужна графическая генерация: компонента, библиотека или готовое изображение.

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

Чаще всего причина в различии рабочих мест: у второго пользователя 64-разрядный клиент, компонента не зарегистрирована на его компьютере или её блокирует антивирус. Сверьте разрядность клиента и факт регистрации OCX на проблемном месте.

Нужен ли специальный сканер для проверки PDF417?

Да, необходим двухмерный (2D) сканер, поддерживающий PDF417. Обычный линейный сканер для EAN-13 такой код физически не считает. Также подойдёт приложение на смартфоне с поддержкой PDF417 для предварительной проверки.

Штрихкод выводится, но при приёме декларации его не читают. В чём причина?

Наиболее вероятны две причины: нарушен формат строки данных (порядок полей, разделители, контрольные значения) либо недостаточное качество печати. Считайте код своим сканером и сравните строку с требованиями формата, затем проверьте печать на другом принтере.

Работает ли PDF417 в веб-клиенте 1С?

Напрямую через OCX — нет, веб-клиент не работает с локальными компонентами такого типа. Решение — формировать штрихкод на сервере и передавать в браузер готовую картинку, либо использовать генерацию средствами серверной библиотеки.

Обновляется ли компонента при обновлении конфигурации?

В типовых конфигурациях макет компоненты обновляется вместе с релизом. Если конфигурация давно не обновлялась, версия компоненты может быть устаревшей и без поддержки нужных типов кодов — это ещё один аргумент поддерживать конфигурацию в актуальном состоянии.

Итог

Что важно запомнить

PDF417 в 1С выводится компонентой Barcode.ocx, а не шрифтом. Ключевые условия успеха: актуальная версия компоненты, совпадение разрядности клиента и OCX, корректная строка данных по регламенту формы и достаточный размер рисунка. Финальная проверка — только чтением распечатанного кода двухмерным сканером.