При переносе сервера CRM на новую архитектуру столкнулся с очень интресной проблемой. Для интеграции CRM - 1С требуется установленный на сервере клиент 1С. С x86-машинами вопросов не возникало - необходимые компоненты регистрировались при инсталляции и были готовы к использованию.

При разворачивании компонентов 1С на x64-сервере, запустив оснастку "Службы компонентов" необходимые компоненты не наблюдались, хотя все соответствующие ключи в реестре регистрировались (CLSID компонентов).

Стоит отметить, что клиентская часть 1С доступна только в x86-архитектуре.
Соответственно, выставить требуемые настройки безопасности для COM-приложения не представлялось возможным. Отчего лог полнился следующими сообщениями.
System.UnauthorizedAccessException: Сбой при получении производства объектов класса COM для компонента с CLSID {B3A7D9DB-3CBA-47F4-B80A-5DDA79D8925A} в результате следующей ошибки: 80070005.
в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
в System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
в System.Activator.CreateInstance(Type type, Boolean nonPublic)
|
Решение проблемы оказалось простым - запустить 32-битную консоль управления MMC и вручную добавить соответствующую оснастку. После чего получаем доступ к настройке желанного V81.Application.

Команда для вызова 32-битной оснастки MMC:
mmc -32
Добавить комментарий