При формировании регламентированных отчетов и машиночитаемых бланков с двумерным штрихкодом PDF417 в конфигурации 1С:Бухгалтерия предприятия 3.0 системные администраторы часто сталкиваются с ошибками запуска внешнего модуля печати. Возникает закономерный вопрос: нужно ли переустанавливать кластер серверов 1С и переводить всю инфраструктуру на 32-разрядную версию (x86) или проблему можно решить настройкой клиентских рабочих мест? Разберем детально причины возникновения этой ошибки, оценим риски даунгрейда сервера и рассмотрим правильные варианты настройки.
Проанализируем архитектуру работы компоненты печати штрихкода. Модуль печати машиночитаемых бланков разработан сторонней организацией (ГНИВЦ ФНС России) и поставляется в виде 32-разрядной библиотеки (COM/ActiveX). 64-разрядного аналога данного модуля от разработчика не существует.
Формирование печатной формы со штрихкодом происходит непосредственно в контексте клиентского приложения (1cv8.exe или 1cv8c.exe). 64-разрядный процесс физически не может загрузить в свое адресное пространство 32-битную внешнюю библиотеку. Из-за этого при попытке напечатать отчет из-под клиента x64 возникает системная ошибка.
Важно понимать: разрядность сервера 1С:Предприятие никак не влияет на работу модуля печати. Серверный процесс (rphost.exe) не взаимодействует с графической библиотекой печати бланков ГНИВЦ. Зависимость существует исключительно на стороне клиентского приложения.
Попытка решить проблему путем полного перевода сервера 1С на архитектуру x86 является критической ошибкой администрирования. Рассмотрим главные риски такого решения:
rphost.exe) не может адресовать более 2–3 ГБ оперативной памяти вне зависимости от объема RAM на физическом сервере.rphost.exe будут аварийно перезапускаться с ошибкой нехватки памяти (Out of memory).Платформа 1С:Предприятие изначально поддерживает гетерогенную работу: сервер может функционировать в 64-разрядном режиме, а клиенты подключаться как в 64-битном, так и в 32-битном исполнении в рамках одной версии релиза.
Разберем по шагам, как настроить корректный запуск 32-разрядного клиента на сервере терминалов (RDP) для всех пользователей одновременно без необходимости индивидуальной правки ярлыков.
C:\ProgramData\1C\1CEStart\1CEStart.cfg
ClientFormat=32
(В зависимости от релиза платформы также может применяться синтаксис ClientFormat=x86).
Если требуется переопределить разрядность запуска точечно для конкретной информационной базы или ярлыка, используем ключ командной строки /AppArch x86 либо укажем параметр AppArch=x86 в свойствах подключения базы в файле .v8i.
Если печать отчетов выполняется исключительно для внутреннего архивного хранения или проверки («для себя»), а не для сдачи в налоговый орган на бумаге, внешнюю компоненту ГНИВЦ можно не задействовать вовсе.
Рассмотрим порядок включения штатной печати в 1С:Бухгалтерии 3.0:
После включения этой опции по кнопке «Печать» будет сформирован стандартный табличный документ 1С (типовой бланк Минфина). Для его отображения и вывода на принтер внешние компоненты не требуются, печать работает штатно на клиентах любой разрядности.
При совместной установке клиентов разной разрядности обратим внимание на COM-коннектор (comcntr.dll). Если внешние программы обмениваются данными с 1С через COM-интерфейс, библиотека должна быть зарегистрирована в операционной системе в соответствии с разрядностью вызывающего приложения:
C:\Program Files (x86)\1cv8\<Релиз>\bin\comcntr.dll.C:\Program Files\1cv8\<Релиз>\bin\comcntr.dll.Регистрация выполняется стандартной утилитой regsvr32 от имени администратора.