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

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

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

Выясним причину ошибки формирования штрихкода

Печать титульных листов и разделов налоговых деклараций со специальным двухмерным штрихкодом выполняется не внутренними алгоритмами самой платформы 1С. Для этой задачи используется внешний единый модуль печати машиночитаемых бланков, разработанный подведомственным предприятием ФНС России (АО «ГНИВЦ»).

Технически данный модуль представляет собой COM/ActiveX-компонент (библиотека TAXDOCPrt, поставляемая в дистрибутиве PDF417.msi). Исторически эта библиотека скомпилирована исключительно как 32-разрядная (x86). Официального 64-битного аналога данного модуля разработчики не выпускали.

В операционных системах Windows 64-битный исполняемый процесс не может напрямую загрузить в свое адресное пространство 32-разрядную динамическую библиотеку DLL или вызывать 32-битный COM-объект «in-process». Следовательно, когда пользователь открывает регламентированный отчет в 64-разрядном клиенте 1С (толстом или тонком) и отправляет его на печать с двухмерным штрихкодом, платформа пытается инициализировать COM-объект печати и завершает операцию ошибкой.

При этом важно понимать ключевую особенность архитектуры: разрядность сервера «1С:Предприятия» никак не привязана к разрядности клиентских приложений. Серверная часть 1С, работающая в режиме x64 под управлением СУБД (например, Microsoft SQL Server), штатно и одновременно обслуживает подключения как 64-битных, так и 32-битных клиентов.

Решение 1. Принудительный запуск 32-битного клиента на рабочей станции

Самый простой, надежный и стандартный способ решения проблемы — использование 32-разрядного клиента на том рабочем месте, где пользователь формирует отчетность (будь то удаленный рабочий стол на терминальном сервере или локальный компьютер сотрудника). Разберем по шагам, как настроить запуск нужной разрядности:

  1. Убедимся, что на компьютере или сервере терминалов установлен 32-битный дистрибутив клиента платформы 1С той же версии релиза, что и работающий сервер «1С:Предприятия». Каталог установки по умолчанию располагается в C:\Program Files (x86)\1cv8\.
  2. Установим модуль печати машиночитаемых форм (PDF417.msi), если он не был установлен ранее. Инсталлятор также входит в состав шаблонов регламентированной отчетности конфигураций.
  3. Запустим окно стартера 1С. В списке информационных баз выделим рабочую базу и нажмем кнопку Изменить.
  4. В окне редактирования свойств базы перейдем к последней странице параметров запуска (где задаются параметры командной строки и версия платформы).
  5. В поле Разрядность заменим системное значение Выбирать автоматически (или 64 (x64)) на значение 32 (x86).
  6. Нажмем Готово и запустим информационную базу.

Теперь клиентская сессия гарантированно откроется в 32-битном адресном пространстве, успешно подключится к 64-битному кластеру серверов 1С и сможет вызвать модуль TAXDOCPrt для корректной генерации штрихкодов.

Решение 2. Установка локального тонкого клиента на домашнем компьютере

Если бухгалтер работает удаленно и печатает отчетность на своем домашнем принтере, перенаправление печати через протокол RDP/терминальный сеанс иногда приводит к сбоям драйверов или искажению мелких элементов штрихкода. Оптимальным решением является перенос интерфейсной части на рабочий ПК пользователя:

  1. Установим на домашнем компьютере пользователя 32-разрядный Тонкий клиент «1С:Предприятия» соответствующей версии.
  2. Установим пакет PDF417.msi непосредственно в операционную систему домашнего компьютера.
  3. Настроим подключение тонкого клиента к информационной базе. Это можно организовать как через VPN-соединение к локальной сети предприятия, так и посредством публикации базы на веб-сервере (IIS или Apache) по протоколу HTTPS.

В этом сценарии вся визуализация отчета и обращение к компоненту PDF417 происходят локально в 32-битной среде, после чего документ направляется на локальный принтер без задержек и промежуточных преобразований.

Альтернативные варианты и обходные пути

Рассмотрим дополнительные методы, которые могут пригодиться в нестандартных инфраструктурных условиях:

  1. Настройка COM+ (Surrogate Process): системные администраторы могут зарегистрировать 32-битную DLL в службе компонентов Windows (панель управления dcomcnfg) в качестве серверного COM-приложения. В таком случае 64-битный клиент сможет обращаться к объекту через суррогатный межпроцессный мост dllhost.exe. Однако этот способ сложнее в сопровождении и может сбрасываться при обновлениях системы.
  2. Печать бланков без штрихкода: если декларация распечатывается для внутреннего архива компании, визирования руководством или передачи в банк, машиночитаемый штрихкод не требуется. В командной панели регламентированного отчета достаточно выбрать печать формы Бланк без двухмерного штрихкода PDF417 — такой макет формируется средствами встроенного табличного документа 1С и работает на любой платформе.
  3. Использование сервисов электронной отчетности: для сдачи отчетности в налоговые органы распечатка бланков на бумаге в большинстве случаев устарела. Настройка сервиса 1С-Отчетность или отправка файлов деклараций через операторов ТКС исключает необходимость формирования штрихкодов, так как проверка и отправка осуществляются в электронном формате XML.
← На главную