Как исправить ошибку «Класс не зарегистрирован» (0x80040154) при синхронизации 1С через COM-соединение?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке или выполнении синхронизации данных между конфигурациями «1С:Зарплата и управление персоналом» и «1С:Бухгалтерия предприятия» пользователи и администраторы часто сталкиваются с неприятной ошибкой. В журнале регистрации фиксируется сбой с кодом -2147221164(0x80040154): Класс не зарегистрирован. Проблема локализуется в общем модуле при попытке инициализировать COM-соединение через программный код, без которого невозможен автоматический регулярный обмен данными между базами 1С.

Давайте проанализируем, почему возникает эта ошибка. Причиной сбоя является невозможность операционной системы Windows найти в реестре зарегистрированный COM-класс V83.COMConnector, который отвечает за прямое подключение к другой информационной базе. Чаще всего это происходит сразу после обновления платформы «1С:Предприятие» или изменения разрядности сервера. В данной статье мы подробно разберем, как решить эту проблему раз и навсегда.

Почему возникает ошибка V83.COMConnector?

Перед тем как перейти к практическим шагам, выясним причину сбоя. Когда одна база 1С пытается подключиться к другой, она выполняет следующий код:


COMConnector = Новый COMObject("V83.COMConnector");
// Или динамическое определение имени класса:
ИмяКоннектора = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя(); 
COMConnector = Новый COMObject(ИмяКоннектора);

Для успешного выполнения этой инструкции в операционной системе Windows должна быть зарегистрирована динамическая библиотека comcntr.dll, которая поставляется вместе с платформой 1С и находится в каталоге bin установленной версии. Если при обновлении платформы регистрация старой библиотеки не была корректно удалена, а новая библиотека не зарегистрировалась, операционная система выдает ошибку о незарегистрированном классе.

Рассмотрим по шагам все доступные способы исправления этой ситуации — от простых к более сложным.

Решение 1. Принудительный сброс старой и регистрация новой библиотеки

Простая регистрация компоненты поверх существующей часто дает сбой, так как в системном реестре Windows остаются «хвосты» от предыдущих релизов платформы. Система продолжает искать файлы по старым, уже несуществующим путям. Выполним полную перерегистрацию библиотеки вручную.

Разберем этот процесс по шагам:

  1. Закройте все запущенные сеансы «1С:Предприятие» на компьютере или сервере.
  2. Запустите командную строку Windows (CMD) обязательно от имени Администратора. Это критически важно, так как обычный пользователь не имеет прав на запись в ветку реестра HKEY_CLASSES_ROOT.
  3. Сначала принудительно отменим регистрацию старого компонента. Введите команду с ключом /u, указав путь к старой версии платформы (если она известна), либо к текущей рабочей папке: regsvr32 /u "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
  4. Для полной очистки реестра рекомендуется выполнить встроенную команду деинсталляции сервера COM самой платформы 1С. Перейдите в каталог bin актуальной платформы и выполните: 1cv8.exe /unregserver
  5. Теперь выполним чистую регистрацию актуальной библиотеки comcntr.dll. Запустите команду: regsvr32 "C:\Program Files\1cv8\8.3.YY.YYYY\bin\comcntr.dll" где 8.3.YY.YYYY — это номер вашей новой, установленной платформы 1С.
  6. В завершение зарегистрируйте COM-сервер платформы обратно: 1cv8.exe /regserver

После успешного выполнения команд система должна выдать информационное сообщение: «Успешное выполнение DllRegisterServer в ...comcntr.dll». Попробуйте запустить синхронизацию заново.

Решение 2. Учет разрядности операционной системы и платформы

Если у вас установлена 64-битная операционная система Windows, крайне важно учитывать разрядность используемой платформы 1С и утилиты регистрации regsvr32. Ошибка часто кроется в использовании не той версии утилиты регистрации.

Проанализируем две возможные ситуации:

  1. Используется 32-битный клиент 1С на 64-битной Windows. В этом случае регистрировать библиотеку необходимо строго через 32-разрядную версию утилиты, расположенную в папке SysWOW64. Команда будет выглядеть так:
    
    C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
    
  2. Используется 64-битная платформа 1С. Здесь мы применяем стандартную утилиту из папки System32:
    
    C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
    

Обратите внимание на пути к папкам программ: для 32-битной версии это обычно Program Files (x86), а для 64-битной — Program Files.

Решение 3. Проверка параметров установки платформы 1С

Иногда при установке или обновлении 64-разрядного сервера «1С:Предприятие» компонент «COM-соединение» отключается в интерактивном режиме инсталлятора по умолчанию. В результате файл comcntr.dll просто отсутствует в каталоге bin или устанавливается некорректно.

Для исправления этой ситуации выполните следующие действия:

  1. Откройте «Панель управления» компьютера или сервера и перейдите в раздел «Программы и компоненты».
  2. Найдите в списке установленную платформу «1С:Предприятие» нужной версии, нажмите на нее правой кнопкой мыши и выберите «Изменить».
  3. В появившемся окне установщика выберите пункт «Изменить» (Modify) и нажмите «Далее».
  4. В дереве компонентов найдите пункт «COM-соединение» (COM-connector). Убедитесь, что для него выбран режим «Данный компонент будет установлен на локальный жесткий диск».
  5. Завершите процесс установки. Программа автоматически скопирует недостающие файлы и зарегистрирует их в системе.

Решение 4. Настройка службы COM+ (для 64-битного сервера 1С)

Это самый надежный и продвинутый метод решения проблемы. Если сервер 1С работает в 64-битном режиме, а внешняя база (или компоненты подключения) требует обращения через 32-битные интерфейсы, обычная регистрация библиотеки через командную строку не поможет. Нам потребуется создать специальное выделенное приложение-обертку в службе компонентов Windows.

Рассмотрим по шагам, как настроить приложение COM+:

  1. Нажмите комбинацию клавиш Win + R, введите команду dcomcnfg и нажмите Enter. Откроется окно «Службы компонентов».
  2. Перейдите по дереву: Службы компонентов -> Компьютеры -> Мой компьютер -> Приложения COM+.
  3. Нажмите правой кнопкой мыши на раздел «Приложения COM+», выберите Создать -> Приложение.
  4. В открывшемся мастере нажмите «Далее», затем выберите «Создать новое приложение».
  5. Введите понятное имя, например, 1C_COM_Connector. В области «Способ активации» обязательно укажите «Серверное приложение». Нажмите «Далее».
  6. На шаге «Учетная запись для запуска приложения» выберите пункт «Указанный пользователь». Нажмите кнопку «Обзор» и введите имя пользователя, под которым запускается служба сервера 1С (по умолчанию это локальный пользователь USR1CV8). Введите и подтвердите пароль этого пользователя. Это критически важно для работы фоновых заданий обмена!
  7. Нажимайте «Далее» до завершения работы мастера.
  8. Теперь раскройте созданное приложение 1C_COM_Connector, найдите внутри ветку «Роли» -> «CreatorOwner» -> «Пользователи» и добавьте туда пользователя USR1CV8.
  9. Перейдите к ветке «Компоненты» внутри вашего нового приложения. Нажмите правой кнопкой мыши -> Создать -> Компонент.
  10. В мастере выберите «Установка новых компонентов» и укажите путь к файлу comcntr.dll из папки bin вашей текущей платформы 1С.
  11. После добавления компонента нажмите правой кнопкой мыши на само приложение 1C_COM_Connector и выберите «Свойства».
  12. Перейдите на вкладку «Безопасность». Снимите флажок «Принудительная проверка доступа для приложений». В разделе «Политика программных ограничений» установите флажок «Применить политику...» и выберите уровень ограничений «Неограниченный» (Unrestricted).
  13. Нажмите «Применить» и «ОК». Для вступления изменений в силу нажмите на приложение правой кнопкой мыши и выберите пункт «Запустить» (или «Перезапустить», если оно уже работало).

Решение 5. Проверка прав доступа к каталогам платформы и реестру

Даже если библиотека успешно зарегистрирована, служба сервера 1С может продолжать выдавать ошибку «Класс не зарегистрирован», если у учетной записи, от имени которой запущена служба (например, USR1CV8), отсутствуют права на чтение файлов платформы или ключей реестра Windows.

Проанализируем настройки безопасности:

  1. Откройте Проводник Windows и перейдите к каталогу установки 1С (обычно C:\Program Files\1cv8).
  2. Нажмите правой кнопкой мыши на папку активной платформы, выберите «Свойства», перейдите на вкладку «Безопасность».
  3. Убедитесь, что системный пользователь USR1CV8 (или LOCAL SERVICE / NETWORK SERVICE, в зависимости от настроек вашего сервера) имеет полные права на чтение и выполнение содержимого этой папки. При необходимости добавьте пользователя и предоставьте ему права «Чтение и выполнение», «Список содержимого папки», «Чтение».
  4. Откройте редактор реестра Windows, запустив команду regedit через окно выполнения (Win + R).
  5. Перейдите по пути HKEY_CLASSES_ROOT\CLSID. С помощью встроенного поиска (Ctrl + F) найдите раздел по ключу V83.COMConnector.
  6. Нажмите правой кнопкой мыши на найденный раздел реестра, выберите пункт «Разрешения» и убедитесь, что у учетной записи службы сервера 1С есть права на чтение этой ветки реестра.

Мы подробно разобрали все возможные системные причины возникновения ошибки «Класс не зарегистрирован» при синхронизации через COM-соединение. Рекомендуется начать исправление с простейшей перерегистрации библиотеки comcntr.dll с правами администратора, а при работе на 64-битных серверах — сразу переходить к настройке выделенного приложения COM+.

← На главную