При настройке обмена с Государственной информационной системой о государственных и муниципальных платежах (ГИС ГМП) в конфигурациях «1С:Бухгалтерия государственного учреждения» (БГУ) пользователи и системные администраторы часто сталкиваются с ошибкой «Не удалось подключить внешнюю компоненту xades». Ситуация осложняется тем, что система может выдавать системное оповещение «Внешняя компонента успешно установлена», однако последующая операция криптографического подписания завершается аварийно. Разберем по шагам, почему возникает эта ошибка и как восстановить работоспособность механизма формирования подписи формата XAdES.
В типовых конфигурациях компонента xades.dll обычно хранится непосредственно в метаданных конфигурации как двоичные данные. В программном коде вызов подключения выглядит следующим образом:
КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.Компонента_xades", "xades");
При выполнении этого кода платформа «1С:Предприятие» выполняет следующую цепочку действий:
ОбщийМакет.Компонента_xades.%LOCALAPPDATA%\1C\1Cv8\... или %APPDATA%\1C\1Cv8\...).1cv8.exe или 1cv8c.exe и выполнить её инициализацию.Если на любом из этих этапов операционная система блокирует доступ к файлу, не находит зависимые библиотеки или сталкивается с несовместимостью разрядностей, функция возвращает значение Ложь, и процесс подписания прерывается. Выясним основные причины сбоев и способы их устранения.
Библиотека xades.dll, встроенная в конфигурации ранних редакций (в частности, БГУ 1.0), является 32-разрядной (x86) COM-библиотекой. 64-разрядный исполняемый процесс «1С:Предприятия» (x86_64) не может загрузить 32-битную динамическую библиотеку напрямую в свое адресное пространство.
Если вы запускаете 64-разрядный клиент «1С:Предприятия», при попытке вызова метода ПодключитьВнешнююКомпоненту или регистрации библиотеки система выдаст сообщение о несовместимости с текущей версией Windows. Для устранения проблемы разберем следующее решение:
C:\Program Files (x86)\1cv8\<НомерВерсииПлатформы>\bin\1cv8.exe.Если штатная авторегистрация из макета не срабатывает из-за политик безопасности Windows, зарегистрируем библиотеку в операционной системе вручную. При выполнении команды regsvr32 системные администраторы часто допускают ошибку, не экранируя пробелы в путях каталогов (например, в каталоге Program Files (x86)), что приводит к системному сообщению: «Ошибка при вызове LoadLibrary("С:\Program") - Не найден указанный модуль».
Выполним корректную ручную регистрацию компоненты по следующему алгоритму:
Общие -> Общие макеты -> Компонента_xades, дважды кликнем по макету и сохраним файл xades.dll на диск (например, в каталог bin установленной платформы 1С или в отдельную системную папку).cmd.exe) обязательно от имени Администратора.regsvr32 -i "C:\Program Files (x86)\1cv8\8.3.6.2100\bin\xades.dll"
После успешного выполнения команды появится системное окно с подтверждением: «Успешное выполнение DllRegisterServer и DllInstall в ... xades.dll».
Для первой инициализации и прописывания COM-объекта в ветку системного реестра HKEY_CLASSES_ROOT требуются повышенные привилегии. Если первый запуск 1С после обновления или переноса базы производился под учетной записью с ограниченными правами, запись в реестр не создается, хотя 1С рапортует об успешной установке.
Проанализируем шаги для исправления записей реестра:
regedit, выполним поиск по ключевому слову xades и очистим устаревшие ветки, указывающие на несуществующие каталоги, после чего повторим регистрацию.Внешняя компонента xades.dll разработана на языке C++ и динамически линкуется со стандартными библиотеками среды выполнения Windows. Если на новом компьютере отсутствует необходимый пакет распространяемых компонентов, функция Windows API LoadLibrary не может загрузить зависимые DLL-файлы (такие как msvcr*.dll) и завершается ошибкой.
Для решения этой проблемы установим на рабочую станцию распространяемые пакеты Microsoft Visual C++ Redistributable (версий 2008, 2010, 2012, 2015–2022) именно 32-битной разрядности (x86), независимо от того, какая разрядность у самой операционной системы Windows.
В случаях, когда файл компоненты был поврежден при первичном извлечении из макета или заблокирован антивирусным программным обеспечением, очистим локальный кэш пользователя:
1cv8.exe и 1cv8c.exe в диспетчере задач.%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.Если операция подписания выполняется в серверном контексте (на 64-разрядном сервере «1С:Предприятия» или в регламентном задании), 32-разрядная компонента не сможет быть загружена рабочим процессом сервера rphost.exe. В такой ситуации настроим суррогатный процесс Windows:
dcomcnfg.exe).Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM+.xades.dllhost.exe, что полностью снимет проблему межразрядной несовместимости.Обратим внимание на версию криптопровайдера. Для работы с современными алгоритмами подписи ГОСТ Р 34.10-2012, используемыми в ГИС ГМП, устаревшей версии «КриптоПро CSP 3.6» недостаточно. Для стабильного взаимодействия и корректной генерации хэш-сумм подписи XAdES убедимся, что на рабочем месте установлена актуальная сертифицированная версия «КриптоПро CSP» (версии 4.0 или 5.0) с действующей лицензией.