Документы и Печать · 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, либо выполнять формирование на сервере с установленной компонентой соответствующей разрядности.
Достаточно правильно вызвать её из кода или макета
Нужно обновить компоненту до версии с поддержкой двухмерных кодов
Проверить битность клиента и регистрацию OCX в системе
Проверить разрешение печати, масштаб и строку данных
Установка и регистрация компоненты Barcode.ocx
Если компоненты в конфигурации нет, её нужно установить вручную. Файл Barcode.ocx распространялся в составе поставок типовых конфигураций и дополнений к ним. Скопируйте файл в системный каталог Windows (для 32-разрядной компоненты на 64-разрядной системе — в папку SysWOW64) и зарегистрируйте её командой regsvr32 от имени администратора.
regsvr32 C:\Windows\SysWOW64\Barcode.ocxПосле регистрации система должна сообщить об успешном выполнении. Если появляется ошибка — чаще всего причина в недостатке прав (нужен запуск командной строки от имени администратора) или в том, что файл заблокирован антивирусом либо скачан из недоверенного источника и повреждён.
В файловых базах с локальными клиентами регистрацию нужно выполнить на каждом рабочем месте, где печатаются формы с PDF417. В клиент-серверном варианте, если штрихкод формируется на сервере, компонента устанавливается на сервер 1С:Предприятия — и тогда настройка рабочих мест не требуется.
Подключение компоненты в типовых конфигурациях
В конфигурациях на БСП ручная регистрация обычно не нужна: компонента хранится в макете и подключается программно. Типовой код подключения выглядит как обращение к общему модулю работы с штрихкодами или как прямое подключение внешней компоненты из макета через ПодключитьВнешнююКомпоненту и создание объекта Новый COMОбъект либо объекта внешней компоненты.
Если в вашей типовой конфигурации PDF417 не выводится, первым делом проверьте, что обновления конфигурации применены полностью: иногда макет компоненты обновляется вместе с релизом, и пропущенные обновления оставляют старую версию без поддержки двухмерных кодов.
Для самописной конфигурации можно добавить макет с компонентой вручную: создать макет типа «Двоичные данные», загрузить в него файл компоненты и в коде подключать её из этого макета. Такой подход удобен тем, что компонента распространяется вместе с конфигурацией и не требует отдельной установки на каждом компьютере.
Вывод PDF417 в табличный документ
Вывод штрихкода в печатную форму выполняется через элемент табличного документа типа «Рисунок». В макете добавьте область с рисунком, а в коде после создания объекта компоненты задайте его свойства: тип штрихкода (значение, соответствующее PDF417), строку данных и размеры. Затем присвойте рисунку табличного документа картинку, полученную из компоненты.
Строка данных для PDF417 формируется по правилам конкретной формы. Например, для налоговых деклараций состав и порядок полей в строке строго регламентированы приёмным ПО: нарушение порядка полей или разделителей приводит к тому, что штрихкод визуально есть, но при приёме не читается. Берите формат строки из документации к конкретной форме, а не «по аналогии».
Обратите внимание на объём данных: чем больше символов кодируется, тем плотнее матрица PDF417 и тем выше требования к качеству печати. Если в код помещается длинная строка, заранее предусмотрите достаточный размер рисунка в макете — при сжатии мелкие элементы сливаются, и сканер перестаёт распознавать код.
- 1Проверьте наличие и версию компоненты печати штрихкодов в конфигурации
- 2При отсутствии — зарегистрируйте Barcode.ocx командой regsvr32 от имени администратора
- 3Подключите компоненту в коде и создайте объект
- 4Установите тип штрихкода PDF417 и передайте строку данных по регламенту формы
- 5Выведите картинку в рисунок табличного документа с достаточным размером
- 6Распечатайте тестовый экземпляр и проверьте чтение сканером
Проверка результата и качества печати
Окончательный критерий правильной установки — читаемость штрихкода реальным сканером, а не его наличие на бумаге. Проверяйте чтение на том же оборудовании, которым будет сканироваться документ при использовании: двухмерный сканер обязателен, линейный (одномерный) сканер PDF417 не считает в принципе.
Печатайте тестовые формы на лазерном принтере с нормальной плотностью тонера. Бледная печать, полосы от изношенного фотобарабана, «заливы» мелких элементов — частые причины нечитаемости. Струйные принтеры для PDF417 подходят хуже: чернила растекаются, и границы модулей размываются.
Не масштабируйте готовую печатную форму при печати («уместить на странице»): изменение масштаба искажает пропорции модулей. Если форма не помещается на лист, корректируйте макет в конфигураторе, а не настройки принтера.
Как проверить результат
Двухмерный сканер считывает код и выдаёт строку данных полностью
Сканер не реагирует или выдаёт обрыв строки
Модули чёткие, с ровными границами, без слипшихся участков
Размытые края, полосы, бледные фрагменты
Считанная строка совпадает с переданной посимвольно, включая разделители
Пропущены поля или изменён порядок данных
Код читается стабильно при нескольких распечатках
Читаемость зависит от конкретного отпечатка
Типичные ошибки и их устранение
Самая распространённая проблема — ошибка «Не удалось подключить внешнюю компоненту» при вроде бы установленном Barcode.ocx. В большинстве случаев это несовпадение разрядности: 64-разрядный клиент не может загрузить 32-разрядную OCX. Проверьте, какой клиент запускается, и при необходимости настройте ярлык на 32-разрядное приложение.
Вторая группа ошибок связана с данными: передача в компоненту строки, содержащей символы вне допустимого набора, или пустой строки. Компонента может молча сформировать некорректный код. Всегда проверяйте входную строку перед выводом и логируйте её при отладке.
Третья группа — права и безопасность. На сервере компонента может блокироваться политиками, а в веб-клиенте работа с локальными OCX ограничена в принципе: для веб-клиента штрихкод нужно формировать на сервере и передавать в браузер готовой картинкой.
Альтернативные способы вывода PDF417
Если штатная компонента по каким-то причинам не подходит, существуют обходные варианты. Один из них — формирование изображения PDF417 внешними средствами (например, серверным скриптом или сторонней библиотекой генерации штрихкодов) и вставка готовой картинки в табличный документ. Это снимает зависимость от разрядности клиента и работает в веб-клиенте.
Другой вариант — использование регламентированных отчётов, где двухмерный штрихкод уже встроен разработчиками конфигурации: в актуальных типовых решениях печать деклараций с PDF417 реализована из коробки, и ничего устанавливать отдельно не нужно — достаточно обновить конфигурацию.
Сравнение вариантов
Подходит для типовых конфигураций; ограничение — зависимость от версии макета и разрядности клиента
Подходит для самописных конфигураций и старых платформ; требует установки на каждое рабочее место
Подходит для веб-клиента и серверного формирования; требует дополнительной разработки и поддержки
Часто задаваемые вопросы
Можно ли вывести PDF417 шрифтом, как линейный штрихкод?
Нет. PDF417 — двухмерный стековый код, он не представляется последовательностью символов шрифта. Для его вывода нужна графическая генерация: компонента, библиотека или готовое изображение.
Почему компонента подключается у одного пользователя и не работает у другого?
Чаще всего причина в различии рабочих мест: у второго пользователя 64-разрядный клиент, компонента не зарегистрирована на его компьютере или её блокирует антивирус. Сверьте разрядность клиента и факт регистрации OCX на проблемном месте.
Нужен ли специальный сканер для проверки PDF417?
Да, необходим двухмерный (2D) сканер, поддерживающий PDF417. Обычный линейный сканер для EAN-13 такой код физически не считает. Также подойдёт приложение на смартфоне с поддержкой PDF417 для предварительной проверки.
Штрихкод выводится, но при приёме декларации его не читают. В чём причина?
Наиболее вероятны две причины: нарушен формат строки данных (порядок полей, разделители, контрольные значения) либо недостаточное качество печати. Считайте код своим сканером и сравните строку с требованиями формата, затем проверьте печать на другом принтере.
Работает ли PDF417 в веб-клиенте 1С?
Напрямую через OCX — нет, веб-клиент не работает с локальными компонентами такого типа. Решение — формировать штрихкод на сервере и передавать в браузер готовую картинку, либо использовать генерацию средствами серверной библиотеки.
Обновляется ли компонента при обновлении конфигурации?
В типовых конфигурациях макет компоненты обновляется вместе с релизом. Если конфигурация давно не обновлялась, версия компоненты может быть устаревшей и без поддержки нужных типов кодов — это ещё один аргумент поддерживать конфигурацию в актуальном состоянии.
Что важно запомнить
PDF417 в 1С выводится компонентой Barcode.ocx, а не шрифтом. Ключевые условия успеха: актуальная версия компоненты, совпадение разрядности клиента и OCX, корректная строка данных по регламенту формы и достаточный размер рисунка. Финальная проверка — только чтением распечатанного кода двухмерным сканером.