0

1С. Ошибка при вызове конструктора (COMОбъект): (0x80040154)

Posted by admin on 01.10.2015 in |

Для обмена информацией между информационными базами используется COM-соединение. При попытке установить соединение из конфигурации под 8.3 с конфой под 8.1 получаем ошибку примерно такого содержания: “При попытке соедиения с COM-сервером произошла следующая ошибка: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”.

Возникает эта ошибка 0x80040154 только на серверной БД. Локально выполняется нормально. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64).

Проблема заключается в том, что нужно из 64-битной программы обратиться к 32-битной DLL (comcntr.dll), а это невозможно сделать напрямую. Но можно использовать 64-битную обертку COM+, которая может работать с 32-битными библиотеками. Это все лирика, а делать нужно следующее:

На сервере 1С.

  1. Запускаем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
  2. В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту “Приложения COM+”, Создать -> Приложение.
  3. Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
  4. Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
  5. В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
  6. В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
  7. В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
  8. Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:\Program Files (x86)\1cv81\bin\comcntr.dll). Завершаем создание компонента.
  9. Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.

Это всё. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Copyright © 2011-2017 Сисадминские будни All rights reserved.
Любое воспроизведение материалов сайта возможно только с активной ссылкой на admsoft.ru.