Ситуация, когда при завершении сеанса пользователя, синхронизации данных или программном создании COM-соединения система выдает системную ошибку 0x80040154 (REGDB_E_CLASSNOTREG) Класс не зарегистрирован, является классической для платформы «1С:Предприятие 8.3». Разберем природу этого сбоя и последовательно рассмотрим все проверенные способы его устранения.
Проанализируем механику возникновения ошибки. В большинстве конфигураций, таких как «1С:Документооборот», при закрытии сеанса или регламентных обменах запускаются фоновые процедуры: выгрузка данных в смежные учетные базы через V83.COMConnector, проверка электронной почты, обращение к локальным внешним библиотекам или криптографическим модулям. Ошибка 0x80040154 означает, что вызывающий процесс обратился к системному реестру Windows по определенному идентификатору класса (CLSID), но операционная система не нашла соответствующей записи или не смогла загрузить указанную динамическую библиотеку DLL из-за несовпадения разрядности процессов.
Наиболее распространенной причиной сбоя является отсутствие или перезапись регистрации COM-соединителя comcntr.dll после установки новой версии платформы 1С или удаления старого дистрибутива. Зарегистрируем требуемую компоненту вручную.
Обратим особое внимание на разрядность операционной системы и платформы 1С:
bin. Если используется 32-разрядная платформа на 64-битной версии Windows, файлы располагаются в каталоге C:\Program Files (x86)\1cv8\. Если установлена 64-разрядная платформа — в C:\Program Files\1cv8\.cmd.exe обязательно от имени администратора.SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.X.XXXX\bin\comcntr.dll"
regsvr32 "C:\Program Files\1cv8\8.3.X.XXXX\bin\comcntr.dll"
Если ошибка возникает не только при обращении к V83.COMConnector, но и при OLE-автоматизации (например, запуск V83.Application), зарегистрируем исполняемый сервер самой платформы штатным механизмом.
1cv8.exe /unregserver
1cv8.exe /regserver
Рассмотрим распространенный архитектурный конфликт: 64-разрядный процесс сервера 1С (rphost.exe) пытается загрузить 32-разрядный COM-компонент, либо стороннее 32-разрядное приложение пытается подключиться к 64-разрядной базе. Напрямую загрузить библиотеку другой битности в адресное пространство процесса невозможно — Windows моментально возвращает ошибку 0x80040154. Для обхода этого ограничения настроим изолированный процесс-суррогат dllhost.exe:
dcomcnfg и нажмем Enter для открытия оснастки «Службы компонентов».V83_COMConnector).dllhost.exe).USR1CV8, под которой работает служба сервера 1С).comcntr.dll из рабочей версии платформы 1С.Разберем ситуацию, когда при инсталляции платформы системный компонент не был развернут физически, либо системный реестр был поврежден параллельной установкой нескольких релизов платформы с последующим неполным удалением старой версии.
Учтем долгосрочные ограничения технологии COM/OLE. Данный механизм является закрытой разработкой Microsoft Windows. При работе с серверами на базе Linux или гетерогенной IT-инфраструктуре COM-соединение не поддерживается. Для организации надежной интеграции между информационными базами «1С:Документооборот» и учетными системами рекомендуется постепенный отказ от прямого вызова V83.COMConnector в пользу современных механизмов обмена:
EnterpriseData.Переход на веб-сервисы полностью исключает зависимость рабочих процессов от регистрации системных DLL, разрядности клиентских приложений и сбоев в реестре Windows.