При попытке инициализировать внешний COM-сервер (например, для работы с PDF через объект Acroexch.app) в серверном контексте разработчики нередко сталкиваются с каскадом системных ошибок. Сначала платформа блокирует выполнение кодом безопасности, а после его снятия возникает ошибка операционной системы 0x80070005: Отказано в доступе.
Разберем по шагам причины такого поведения платформы 1С:Предприятие и операционной системы Windows, а также рассмотрим правильные способы настройки серверного окружения и альтернативные варианты решения задачи.
Когда в коде вызывается конструктор создания внешнего объекта:
&НаСервере
Процедура ИнициализироватьCOMОбъект()
App = Новый COMОбъект("Acroexch.app");
КонецПроцедуры
Платформа может вернуть исключение: «Установлен безопасный режим. Выполнение операции запрещено». Вызов метода УстановитьБезопасныйРежим(Ложь) внутри непривилегированного модуля не дает результата, поскольку платформа запрещает отключать ограничения безопасности коду, который сам выполняется в ограниченном контексте.
Проанализируем шаги, необходимые для корректного запуска кода на стороне 1С:
Acroexch.app или соответствующий CLSID).После снятия ограничений платформы 1С выполнение передается операционной системе Windows. Если служба сервера 1С не имеет достаточных прав на запуск и взаимодействие с конкретным OLE/COM-компонентом, операционная система возвращает ошибку 0x80070005.
Выясним причину: служба 1С:Предприятия по умолчанию запускается от имени специальной системной учетной записи (например, USR1CV8), у которой нет прав на интерактивный запуск графических и сторонних COM-приложений.
Разберем настройку прав через оснастку системных компонентов Windows:
dcomcnfg и нажмем клавишу Enter.Adobe Acrobat Document, AcroExch или соответствующий AppID из системного реестра).USR1CV8) и предоставим ему полные флаги: Локальный запуск, Локальная активация и Локальный доступ.При настройке COM-соединений на серверной стороне необходимо учитывать несколько критических факторов:
x86-64), а сторонний программный пакет (Adobe Acrobat) установлен в 32-разрядном варианте, прямой запуск COM-объекта будет невозможен без предварительной регистрации компонента в виде отдельного серверного приложения в оснастке COM+.USR1CV8:
C:\Windows\System32\config\systemprofile\DesktopC:\Windows\SysWOW64\config\systemprofile\DesktopAcroexch.app присутствует только в полных версиях Acrobat (Standard или Pro) и официально не поддерживается разработчиком для использования в фоновом режиме на серверных ОС из-за риска зависания модальных окон.Для стабильной работы фоновых заданий и серверного кода рекомендуется отказаться от нестабильных OLE/COM-объектов в пользу специализированных утилит и библиотек:
ЗапуститьПриложение() не зависит от служб DCOM и разрядности сервера 1С. Для операций с PDF отлично подходят:
pdftk — объединение, разделение и наложение штампов на страницы;Ghostscript — конвертация, растеризация и сжатие документов;qpdf — преобразование, оптимизация и шифрование файлов.ПодключитьВнешнююКомпоненту() и работают одинаково быстро как под управлением Windows, так и на Linux-серверах.&НаКлиенте, где он выполняется в сеансе Windows пользователя без необходимости сложного администрирования серверных служб DCOM.