При настройке или выполнении синхронизации данных между конфигурациями «1С:Зарплата и управление персоналом» и «1С:Бухгалтерия предприятия» пользователи и администраторы часто сталкиваются с неприятной ошибкой. В журнале регистрации фиксируется сбой с кодом -2147221164(0x80040154): Класс не зарегистрирован. Проблема локализуется в общем модуле при попытке инициализировать COM-соединение через программный код, без которого невозможен автоматический регулярный обмен данными между базами 1С.
Давайте проанализируем, почему возникает эта ошибка. Причиной сбоя является невозможность операционной системы Windows найти в реестре зарегистрированный COM-класс V83.COMConnector, который отвечает за прямое подключение к другой информационной базе. Чаще всего это происходит сразу после обновления платформы «1С:Предприятие» или изменения разрядности сервера. В данной статье мы подробно разберем, как решить эту проблему раз и навсегда.
Перед тем как перейти к практическим шагам, выясним причину сбоя. Когда одна база 1С пытается подключиться к другой, она выполняет следующий код:
COMConnector = Новый COMObject("V83.COMConnector");
// Или динамическое определение имени класса:
ИмяКоннектора = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя();
COMConnector = Новый COMObject(ИмяКоннектора);
Для успешного выполнения этой инструкции в операционной системе Windows должна быть зарегистрирована динамическая библиотека comcntr.dll, которая поставляется вместе с платформой 1С и находится в каталоге bin установленной версии. Если при обновлении платформы регистрация старой библиотеки не была корректно удалена, а новая библиотека не зарегистрировалась, операционная система выдает ошибку о незарегистрированном классе.
Рассмотрим по шагам все доступные способы исправления этой ситуации — от простых к более сложным.
Простая регистрация компоненты поверх существующей часто дает сбой, так как в системном реестре Windows остаются «хвосты» от предыдущих релизов платформы. Система продолжает искать файлы по старым, уже несуществующим путям. Выполним полную перерегистрацию библиотеки вручную.
Разберем этот процесс по шагам:
HKEY_CLASSES_ROOT./u, указав путь к старой версии платформы (если она известна), либо к текущей рабочей папке:
regsvr32 /u "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
bin актуальной платформы и выполните:
1cv8.exe /unregserver
comcntr.dll. Запустите команду:
regsvr32 "C:\Program Files\1cv8\8.3.YY.YYYY\bin\comcntr.dll"
где 8.3.YY.YYYY — это номер вашей новой, установленной платформы 1С.
1cv8.exe /regserver
После успешного выполнения команд система должна выдать информационное сообщение: «Успешное выполнение DllRegisterServer в ...comcntr.dll». Попробуйте запустить синхронизацию заново.
Если у вас установлена 64-битная операционная система Windows, крайне важно учитывать разрядность используемой платформы 1С и утилиты регистрации regsvr32. Ошибка часто кроется в использовании не той версии утилиты регистрации.
Проанализируем две возможные ситуации:
SysWOW64. Команда будет выглядеть так:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
System32:
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Обратите внимание на пути к папкам программ: для 32-битной версии это обычно Program Files (x86), а для 64-битной — Program Files.
Иногда при установке или обновлении 64-разрядного сервера «1С:Предприятие» компонент «COM-соединение» отключается в интерактивном режиме инсталлятора по умолчанию. В результате файл comcntr.dll просто отсутствует в каталоге bin или устанавливается некорректно.
Для исправления этой ситуации выполните следующие действия:
Это самый надежный и продвинутый метод решения проблемы. Если сервер 1С работает в 64-битном режиме, а внешняя база (или компоненты подключения) требует обращения через 32-битные интерфейсы, обычная регистрация библиотеки через командную строку не поможет. Нам потребуется создать специальное выделенное приложение-обертку в службе компонентов Windows.
Рассмотрим по шагам, как настроить приложение COM+:
Win + R, введите команду dcomcnfg и нажмите Enter. Откроется окно «Службы компонентов».1C_COM_Connector. В области «Способ активации» обязательно укажите «Серверное приложение». Нажмите «Далее».USR1CV8). Введите и подтвердите пароль этого пользователя. Это критически важно для работы фоновых заданий обмена!1C_COM_Connector, найдите внутри ветку «Роли» -> «CreatorOwner» -> «Пользователи» и добавьте туда пользователя USR1CV8.comcntr.dll из папки bin вашей текущей платформы 1С.1C_COM_Connector и выберите «Свойства».Даже если библиотека успешно зарегистрирована, служба сервера 1С может продолжать выдавать ошибку «Класс не зарегистрирован», если у учетной записи, от имени которой запущена служба (например, USR1CV8), отсутствуют права на чтение файлов платформы или ключей реестра Windows.
Проанализируем настройки безопасности:
C:\Program Files\1cv8).USR1CV8 (или LOCAL SERVICE / NETWORK SERVICE, в зависимости от настроек вашего сервера) имеет полные права на чтение и выполнение содержимого этой папки. При необходимости добавьте пользователя и предоставьте ему права «Чтение и выполнение», «Список содержимого папки», «Чтение».regedit через окно выполнения (Win + R).HKEY_CLASSES_ROOT\CLSID. С помощью встроенного поиска (Ctrl + F) найдите раздел по ключу V83.COMConnector.Мы подробно разобрали все возможные системные причины возникновения ошибки «Класс не зарегистрирован» при синхронизации через COM-соединение. Рекомендуется начать исправление с простейшей перерегистрации библиотеки comcntr.dll с правами администратора, а при работе на 64-битных серверах — сразу переходить к настройке выделенного приложения COM+.