При обновлении платформы 1С:Предприятие или переносе баз на новый сервер системные администраторы и разработчики часто сталкиваются с критической ошибкой: «-2147221164(0x80040154): Класс не зарегистрирован». Чаще всего это происходит при попытке программного создания объекта COMConnector для обмена данными между конфигурациями (например, УТ и БП). Проблема кроется в том, что операционная система не может найти или инициализировать библиотеку comcntr.dll, отвечающую за COM-соединение.
Рассмотрим подробно причины возникновения этой ситуации и разберем пошаговые методы регистрации компоненты, от самых простых до продвинутых настроек в службах компонентов Windows.
Прежде чем приступать к действиям, проанализируем ситуацию. Ошибка 0x80040154 означает, что в реестре Windows отсутствует запись о программном идентификаторе V83.COMConnector или путь к указанному в реестре файлу comcntr.dll является недействительным. Это случается из-за:
Проанализируем стандартный метод регистрации. Важно помнить, что в 64-битных операционных системах существует две версии утилиты regsvr32. Разберем правильный порядок действий:
Запустим командную строку (cmd) строго от имени администратора. Если ваша платформа 1С установлена в папку Program Files (x86), используйте 32-битную версию утилиты. Выполним команды последовательно:
cd "C:\Windows\SysWOW64"
regsvr32 "C:\Program Files (x86)\1cv8\8.3.12.1616\bin\comcntr.dll"
Если используется 64-битная версия платформы, регистрацию следует проводить через системную папку System32:
cd "C:\Windows\System32"
regsvr32 "C:\Program Files\1cv8\8.3.12.1616\bin\comcntr.dll"
Важный нюанс: Перед регистрацией новой версии рекомендуется сначала отменить регистрацию старой, используя ключ /u. Рассмотрим пример:
regsvr32 /u "C:\Program Files\1cv8\СТАРЫЙ_РЕЛИЗ\bin\comcntr.dll"
regsvr32 "C:\Program Files\1cv8\НОВЫЙ_РЕЛИЗ\bin\comcntr.dll"
Если регистрация проходит успешно, но ошибка в 1С сохраняется, проверим зависимости. Для корректной работы comcntr.dll в версиях платформы 8.3.11 и выше требуются определенные компоненты ОС. Посмотрим, установлены ли у вас следующие пакеты:
KB976932 (Service Pack 1) и KB2999226 (Universal C Runtime). Без них библиотека просто не сможет инициализироваться.IESHIMS.DLL.Этот метод является самым надежным, особенно если вы используете 64-битную операционную систему, а вызов COM-объекта происходит из приложения другой разрядности. Мы создадим «обертку» (Surrogate Process), которая позволит библиотеке работать в отдельном процессе dllhost.exe.
Разберем этот процесс по шагам:
V83COMConnector и установим способ активации «Серверное приложение».comcntr.dll.V83COMConnector, перейдем на вкладку «Удостоверение» (Identity). Вместо «Текущий пользователь» выберем «Указанный пользователь» и введем данные учетной записи, от которой запускается сервер 1С (обычно это USR1CV8) или локального администратора.После этого перезапустим созданное приложение COM+ (правой кнопкой — «Завершить» и «Запустить»). Теперь 1С будет обращаться к компоненте через этот изолированный процесс, что снимает большинство проблем с правами и разрядностью.
Для быстрой регистрации при частой смене релизов можно использовать специальный скрипт. Рассмотрим пример автоматизированного файла RegCOM.cmd, который нужно поместить в папку bin установленной платформы и запустить от имени администратора:
@ECHO off
title Registration of COM Connector
SET minimized=true
if not "%minimized%"=="" GOTO 2
:1
ECHO Requesting administrative privileges...
pause
:2
regsvr32.exe /i:user "%~dp0comcntr.dll"
IF %ERRORLEVEL% EQU 0 (
ECHO Library successfully registered!
) ELSE (
ECHO Registration failed. Error code: %ERRORLEVEL%
)
pause
Проанализируем работу скрипта: он использует переменную %~dp0, чтобы автоматически определить путь к папке, в которой он находится, и регистрирует находящуюся там библиотеку comcntr.dll с флагом текущего пользователя.
Подведем итоги. Если при вызове конструктора Новый COMObject("V83.COMConnector") вы получаете ошибку, мы рекомендуем действовать в следующем порядке:
Visual C++.Агент сервера 1С:Предприятия после проведения манипуляций с регистрацией библиотек, чтобы изменения вступили в силу для рабочих процессов.Применяя эти структурные подходы, вы сможете обеспечить стабильную работу синхронизации данных и COM-соединений в вашей системе.