Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

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

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  15.04.2026 Актуальность проверена: 15.04.2026   5 мин.
Подобрать перенос данных 1С

Специализируемся на переносах данных 1С с 2015г.

Подобрать перенос данных 1С >>

Интеграция 1С с маркетплейсами

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

Изучить продукты >>

Содержание

Причины появления ошибки

Сообщение «Ошибка при вызове конструктора (COMОбъект) -2147221164 (0x80040154) класс не зарегистрирован» означает, что нужный COM-класс не найден. Чаще всего это связано с:

  • Несовпадение версий 1С: платформа 1С и версия зарегистрированной библиотеки comcntr.dll могут иметь разную версию (на пример, 8.3 и 8.5) [1].
  • Разрядность платформы: 64-разрядная 1С не способна напрямую использовать 32-битную библиотеку comcntr.dll [1].
  • Отсутствие регистрации DLL: файл comcntr.dll просто не зарегистрирован в реестре Windows [1].

Быстрое решение: регистрация comcntr.dll

Часто подобная ошибка устраняется простой регистрацией библиотеки comcntr.dll. Для этого откройте командную строку Windows от имени администратора на сервере 1С и введите команду, например:

C:\Windows\SysWOW64\regsvr32 "C:\Program Files\1cv8\8.x.x.xxxx\bin\comcntr.dll"

где 8.x.x.xxxx — номер установленной платформы 1С. Если у вас 64-битная ОС и 32-битная платформа 1С, используйте regsvr32 из SysWOW64 и путь к Program Files (x86) [2]. После успешной регистрации должна появиться надпись об успешном выполнении. Иногда полезно сначала отменить старую регистрацию и только потом добавить новую (см. ниже).

Отмена и повторная регистрация компонента

Если простая регистрация не помогла, стоит выполнить отмену регистрации и зарегистрировать DLL заново. В командной строке это делается с ключом /u:

C:\Windows\SysWOW64\regsvr32 /u "C:\Program Files\1cv8\8.x.x.xxxx\bin\comcntr.dll"

Затем снова запустить regsvr32 без /u. Перед этим можно также выполнить команду платформы: 1cv8.exe /unregserver, чтобы снять старую регистрацию COM-сервера, а потом 1cv8.exe /regserver [3].

Проверка прав доступа пользователя службы сервера 1С

Причиной ошибки может быть и недостаток прав у учетной записи, под которой работает служба 1С. Убедитесь, что этот пользователь обладает правами чтения и записи в папке, где хранятся информационные базы. Если доступа нет, COM-соединение может не создаваться или не работать корректно. Также убедитесь, что для регистрации библиотек консоль запускается с повышенными правами (Run as Administrator).

Разрядность платформы и пути в файловой системе

При использовании 32-битной платформы 1С (даже на 64-битной Windows) файлы программы лежат в C:\Program Files (x86)\1cv8\…. Тогда при выполнении regsvr32 убедитесь, что путь включает (x86). Если же используется 64-битная платформа, путь пойдёт через C:\Program Files\1cv8\…. В 64-битной ОС регистрировать DLL нужно из SysWOW64 (как показано выше) [2].

Создание COM+ приложения вручную

Если предыдущие методы не помогли, можно создать COM+‑приложение «вручную». Для этого в Панели управления откройте Администрирование → Службы компонентов. Кликните правой кнопкой на «Приложения COM+» → «Создать» → «Приложение». В мастере выберите «Создать новое приложение», введите имя (например, V83COMConnector или V85COMConnector) и тип – «Серверное приложение» [4]. Укажите пользователя службы 1С и роль CreatorOwner [4]. После создания приложения разверните его, правым кликом на «Компоненты» выберите «Создать → Компонент». В мастере компонента укажите «Установка новых компонентов» и выберите файл comcntr.dll (из bin вашей платформы) [5]. В свойствах компонента на вкладке «Безопасность» снимите галку «Принудительная проверка доступа» и установите политику «Неограниченный» [6].

Скрипт проверки регистрации comcntr.dll

Можно написать простой скрипт для проверки: например, VBScript, который пытается создать COM-объект V85.COMConnector. Если объект успешно создаётся, значит библиотека зарегистрирована. К слову, проверить COM-подключение можно и в самом 1С: попытка вызвать Новый COMОбъект выдаст ошибку регистрации, если библиотеки нет. Однако COMConnector давно считается устаревшим механизмом обмена; в новых релизах 1С есть более современные подходы [7]. Пример (save как check_com.vbs):

On Error Resume Next
Set V8  =  CreateObject ("V85.COMConnector")
If  Err.Number  = 0 Then
WScript.Echo  " Зарегистрирован "
Else
WScript.Echo  " Не   зарегистрирован "
End If

Запустите через cscript.exe, и по результату можно судить о регистрации.

Версии платформы 1С и имена COM-библиотек

В 1С имя COM-класса зависит от мажорной версии платформы. Так, для платформы 8.3 COM-класс будет называться V83.COMConnector или V83.Application, а для 8.5 соответственно V85.COMConnector / V85.Application [8]. Следите за этим при написании кода и регистрации: класс должен совпадать с вашей версией 1С.

V85.Application или V85.COMConnector: в чем разница

Компонент V85.Application — это полноценное приложение 1С (OLE сервер), умеющее работать с формами и интерфейсом. COMConnector (V85.COMConnector) — «внешнее соединение» без визуальной оболочки, заточенное под обмен данными [7]. COMConnector заметно быстрее и легче по ресурсам, но не поддерживает работу с формами или GUI-методами [9]. На практике обычно стоит использовать COMConnector для простого обмена данными (это быстрее и проще) [7]. Если нужно запустить обработку интерфейса 1С, используйте V85.Application. Пример кода обращения по COM (платформа 8.5 +):

 // Через COMConnector
V8 = Новый COMОбъект("V85.COMConnector");
Sess = V8.Connect("Srvr='server'; Ref='base';");
Результат = Sess.ОбщМодуль.Функция(Парам);

// Через Application
V8 = Новый COMОбъект("V85.Application");
V8.Connect("Srvr='server'; Ref='base';");
Обраб = V8.Обработки.ВыгрузкаXML.Создать();
Обраб.Функция(Парам);

Где регистрировать COM-компоненту: сервер или клиент?

Библиотеку comcntr.dll нужно регистрировать на том компьютере, где будет инициироваться COM-соединение. Если вы используете соединение из кода сервера 1С (например, из серверного агента), регистрируйте на сервере. Если же тонкий клиент устанавливает COM-подключение к удалённой базе, нужно зарегистрировать и на клиенте. Часто рекомендуют сначала провести регистрацию на сервере [10], но в общем случае лучше сделать это везде, где запускается COM-объект.

Заключение

В большинстве случаев ошибка 2147221164 устраняется именно через правильную регистрацию COM‑класса (повторим: regsvr32 или 1cv8 /register) и согласование версий 1С. Кстати, некоторые администраторы отмечают: такие COM-ошибки порой всплывают даже в обновлённых системах, словно реликт устаревшей архитектуры. Тем не менее, стоит ли полностью полагаться на старый механизм COM, когда в современных версиях есть новые технологии интеграции? Может ли пережиток прошлого — COMConnector — ещё долго оставаться основным мостом между базами 1С или пора отказаться от него?

MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку