Как настроить печать регламентированных отчетов с двумерным штрихкодом PDF417 в 1С и нужно ли менять разрядность сервера

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

При формировании регламентированных отчетов и машиночитаемых бланков с двумерным штрихкодом PDF417 в конфигурации 1С:Бухгалтерия предприятия 3.0 системные администраторы часто сталкиваются с ошибками запуска внешнего модуля печати. Возникает закономерный вопрос: нужно ли переустанавливать кластер серверов 1С и переводить всю инфраструктуру на 32-разрядную версию (x86) или проблему можно решить настройкой клиентских рабочих мест? Разберем детально причины возникновения этой ошибки, оценим риски даунгрейда сервера и рассмотрим правильные варианты настройки.

Причина несовместимости модуля печати PDF417 с 64-битной платформой

Проанализируем архитектуру работы компоненты печати штрихкода. Модуль печати машиночитаемых бланков разработан сторонней организацией (ГНИВЦ ФНС России) и поставляется в виде 32-разрядной библиотеки (COM/ActiveX). 64-разрядного аналога данного модуля от разработчика не существует.

Формирование печатной формы со штрихкодом происходит непосредственно в контексте клиентского приложения (1cv8.exe или 1cv8c.exe). 64-разрядный процесс физически не может загрузить в свое адресное пространство 32-битную внешнюю библиотеку. Из-за этого при попытке напечатать отчет из-под клиента x64 возникает системная ошибка.

Важно понимать: разрядность сервера 1С:Предприятие никак не влияет на работу модуля печати. Серверный процесс (rphost.exe) не взаимодействует с графической библиотекой печати бланков ГНИВЦ. Зависимость существует исключительно на стороне клиентского приложения.

Почему нельзя переустанавливать сервер 1С на 32-разрядную платформу

Попытка решить проблему путем полного перевода сервера 1С на архитектуру x86 является критической ошибкой администрирования. Рассмотрим главные риски такого решения:

  1. Жесткое ограничение памяти: 32-разрядный рабочий процесс сервера (rphost.exe) не может адресовать более 2–3 ГБ оперативной памяти вне зависимости от объема RAM на физическом сервере.
  2. Аварийные завершения сессий: Современные типовые конфигурации (включая БП 3.0 и работу с СУБД уровня Microsoft SQL Server 2017) крайне требовательны к объему памяти. При формировании тяжелых отчетов или групповом перепроведении документов процессы rphost.exe будут аварийно перезапускаться с ошибкой нехватки памяти (Out of memory).
  3. Потеря производительности: Понижение разрядности сервера искусственно ограничит возможности масштабирования и сведет на нет преимущества 64-битной операционной системы и СУБД.

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

Основное решение: централизованная настройка запуска 32-битного клиента

Разберем по шагам, как настроить корректный запуск 32-разрядного клиента на сервере терминалов (RDP) для всех пользователей одновременно без необходимости индивидуальной правки ярлыков.

  1. Установка платформы: Установим на терминальный сервер 32-разрядную версию платформы 1С:Предприятие (x86) того же точного релиза, что и работающий сервер 1С x64.
  2. Редактирование общего конфигурационного файла стартера: Откроем для редактирования общесистемный файл конфигурации запуска 1С:

    C:\ProgramData\1C\1CEStart\1CEStart.cfg

  3. Указание разрядности по умолчанию: Добавим или изменим параметр разрядности клиента, чтобы стартер по умолчанию запускал 32-битную версию:

    ClientFormat=32

    (В зависимости от релиза платформы также может применяться синтаксис ClientFormat=x86).

  4. Проверка прав: Сохраним изменения. Теперь все терминальные пользователи при запуске баз через стандартный стартер будут автоматически запускать 32-битный процесс клиента, что обеспечит бесперебойную работу модуля печати PDF417.

Если требуется переопределить разрядность запуска точечно для конкретной информационной базы или ярлыка, используем ключ командной строки /AppArch x86 либо укажем параметр AppArch=x86 в свойствах подключения базы в файле .v8i.

Альтернативное решение: печать бланков без штрихкода

Если печать отчетов выполняется исключительно для внутреннего архивного хранения или проверки («для себя»), а не для сдачи в налоговый орган на бумаге, внешнюю компоненту ГНИВЦ можно не задействовать вовсе.

Рассмотрим порядок включения штатной печати в 1С:Бухгалтерии 3.0:

  1. Откроем форму регламентированного отчета.
  2. Нажмем кнопку Еще и перейдем в пункт Настройка.
  3. Установим флаг Разрешить печать без штрихкода PDF417.
  4. Нажмем Сохранить.

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

Взаимодействие с COM-соединениями

При совместной установке клиентов разной разрядности обратим внимание на COM-коннектор (comcntr.dll). Если внешние программы обмениваются данными с 1С через COM-интерфейс, библиотека должна быть зарегистрирована в операционной системе в соответствии с разрядностью вызывающего приложения:

  1. Для 32-битных внешних систем регистрируем DLL из каталога: C:\Program Files (x86)\1cv8\<Релиз>\bin\comcntr.dll.
  2. Для 64-битных систем — из каталога: C:\Program Files\1cv8\<Релиз>\bin\comcntr.dll.

Регистрация выполняется стандартной утилитой regsvr32 от имени администратора.

← На главную