Windows / 1С 23 марта 2026 8 мин чтения
ЕС
Евгений Семёнов
Генеральный директор ООО АйТи Фреш · 15+ лет в IT

Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение

1c-com-class-not-registered

Обмен данными между базами 1С работал стабильно — и вдруг в журнале регистрации появляется лаконичная строка: «Не удалось подключиться к приложению: -2147221164 (0x80040154): Класс не зарегистрирован». Иногда ошибка всплывает при ручном запуске синхронизации, иногда — только в фоновом задании. Результат один: обмен не работает, данные не уходят, бухгалтерия нервничает.

В этой статье разберём, что именно означает код 0x80040154, почему он возникает на серверах с 1С:Предприятие, и как устранить проблему тремя разными способами — в зависимости от конфигурации вашего сервера.

Что такое 0x80040154 и при чём тут COM

Код ошибки 0x80040154 (или REGDB_E_CLASSNOTREG) — стандартный Windows-код, который означает: запрошенный COM-класс не найден в реестре. Когда 1С выполняет обмен через COM-соединение, она обращается к компоненту V83COMConnector, реализованному в файле comcntr.dll. Если эта DLL не зарегистрирована в реестре Windows или зарегистрирована для другой версии платформы, система возвращает именно эту ошибку.

Чаще всего проблема возникает в следующих ситуациях:

Запомните: регистрация comcntr.dll всегда выполняется только на сервере 1С, а не на клиентских машинах. Регистрировать DLL на клиенте бессмысленно — обмен инициирует серверная сторона.

Шаг 1. Проверяем права учётной записи

Прежде чем трогать реестр и DLL, убедитесь в простом: под какой учётной записью запускается Агент сервера 1С? Откройте Службы (services.msc), найдите Агент сервера 1С:Предприятие 8.3 и посмотрите на вкладку «Вход в систему».

Если агент работает под системной учётной записью (LocalSystem или NT AUTHORITY\SYSTEM), а информационная база хранится в файловом каталоге сети — доступа к ней, скорее всего, нет. Нужно либо перевести агент на доменную учётную запись, либо выдать права на папку базы.

Для файловой базы откройте свойства папки, перейдите в «Безопасность» и добавьте учётную запись агента с правами «Изменение»:

# PowerShell: выдача прав на папку базы
$path = "D:\1C_Bases\Trade"
$account = "DOMAIN\svc_1cagent"
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    $account, "Modify", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.SetAccessRule($rule)
Set-Acl $path $acl
Write-Host "Права выданы для $account на $path"

Шаг 2. Перерегистрируем comcntr.dll

Это самое распространённое решение. После обновления платформы старый comcntr.dll может оставаться в реестре, а новый — не регистрироваться автоматически. Нужно сначала снять старую регистрацию, потом зарегистрировать актуальную версию.

Важно: все команды ниже выполняются в командной строке, запущенной от имени администратора (правая кнопка на cmd.exe → «Запуск от имени администратора»). Без прав администратора получите ошибку 0x80070005.

64-битная платформа 1С на 64-битной Windows

Большинство современных установок используют именно этот вариант. DLL находится в Program Files (без x86):

:: Снимаем регистрацию старой версии
regsvr32 /u "C:\Program Files\1cv8\8.3.24.1691\bin\comcntr.dll"

:: Если на сервере осталась и 32-битная версия
regsvr32 /u "C:\Program Files (x86)\1cv8\8.3.24.1691\bin\comcntr.dll"

:: Регистрируем актуальную версию
regsvr32 "C:\Program Files\1cv8\8.3.27.1786\bin\comcntr.dll"

Номер версии замените на актуальный. Найти нужный путь можно так:

:: Список установленных версий платформы
dir "C:\Program Files\1cv8\" /b
dir "C:\Program Files (x86)\1cv8\" /b 2>nul

32-битная платформа 1С на 64-битной Windows

В этом случае 32-битные COM-компоненты регистрируются через SysWOW64\regsvr32.exe:

:: Снимаем старую
C:\Windows\SysWOW64\regsvr32.exe /u "C:\Program Files (x86)\1cv8\8.3.24.1691\bin\comcntr.dll"

:: Регистрируем новую
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.27.1786\bin\comcntr.dll"

После успешной регистрации появится диалог «DllRegisterServer succeeded». Если этого не произошло — перечитайте предупреждение выше и проверьте права запуска.

Шаг 3. Создаём COM+-приложение вручную

Если перерегистрация DLL не помогла, проблема может быть глубже: COM+-приложение V83COMConnector либо отсутствует, либо настроено неправильно. Создадим его вручную через оснастку «Службы компонентов».

Откройте Панель управления → Администрирование → Службы компонентов (или выполните dcomcnfg). В дереве слева разверните: Службы компонентов → Компьютеры → Мой компьютер → COM+ приложения.

Создание нового приложения

  1. Щёлкните правой кнопкой по папке COM+ ПриложенияСоздать → Приложение
  2. Выберите «Создать новое приложение»
  3. Введите имя: V83COMConnector, тип активации: Серверное приложение
  4. На шаге выбора учётной записи укажите служебную учётную запись агента 1С — это критично для фоновых заданий
  5. Пройдите оставшиеся шаги мастера без изменений

Добавление компонента comcntr.dll

  1. Разверните созданное приложение V83COMConnector → папка Компоненты
  2. Правая кнопка → Создать → Компонент«Установить новые компоненты»
  3. Укажите путь к актуальному comcntr.dll из папки нужной версии платформы
  4. Завершите мастер

Настройка безопасности приложения

После добавления компонента откройте свойства V83COMConnector, вкладка Безопасность:

Альтернатива: вместо полного отключения проверок можно добавить нужные учётные записи в роли. Разверните V83COMConnector → Роли → CreatorOwner → Пользователи и добавьте туда USR1CV8 и учётную запись, под которой выполняется синхронизация.

Проверяем результат

После любого из шагов перезапустите службу Агента сервера 1С и попробуйте запустить обмен вручную. В журнале регистрации 1С (Администрирование → Журнал регистрации, фильтр по событию «Ошибка») ошибка 0x80040154 не должна появляться.

Для быстрой проверки, зарегистрирован ли COM-класс, воспользуйтесь PowerShell:

# Проверяем наличие ProgID V83COMConnector в реестре
$progid = "V83COMConnector"
$clsid = (Get-ItemProperty "HKLM:\SOFTWARE\Classes\$progid\CLSID" -ErrorAction SilentlyContinue).'(default)'
if ($clsid) {
    Write-Host "COM-класс найден: CLSID = $clsid" -ForegroundColor Green
    $path64 = "HKLM:\SOFTWARE\Classes\CLSID\$clsid"
    $path32 = "HKLM:\SOFTWARE\WOW6432Node\Classes\CLSID\$clsid"
    if (Test-Path $path64) { Write-Host "64-bit регистрация: OK" -ForegroundColor Green }
    if (Test-Path $path32) { Write-Host "32-bit регистрация: OK" -ForegroundColor Green }
} else {
    Write-Host "COM-класс V83COMConnector НЕ найден в реестре!" -ForegroundColor Red
    Write-Host "Выполните регистрацию comcntr.dll через regsvr32"
}

Дополнительные причины и редкие случаи

Код ссылается на V82COMConnector

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

Тип приложения: Серверное vs Библиотечное

Серверное COM+-приложение запускается в отдельном процессе (dllhost.exe). Если на сервере жёсткие ограничения по запуску процессов или строгий UAC, попробуйте переключить тип на «Библиотечное приложение» — тогда DLL будет загружаться прямо в процесс вызывающей программы, без создания нового dllhost.

Зависшие процессы dllhost.exe

После исправления ошибки иногда остаются зависшие экземпляры dllhost.exe, которые держат старую версию DLL и не дают зарегистрировать новую. Завершите их вручную через PowerShell:

# Завершить зависшие процессы COM-коннектора
Get-WmiObject Win32_Process -Filter "Name='dllhost.exe'" | ForEach-Object {
    if ($_.CommandLine -like "*comcntr*" -or $_.CommandLine -like "*1cv8*") {
        Write-Host "Завершаем PID $($_.ProcessId)"
        Stop-Process -Id $_.ProcessId -Force
    }
}
Write-Host "Готово"

Если точно идентифицировать процессы не получается — безопаснее перезагрузить сервер в ближайшее окно обслуживания. Принудительное завершение чужих процессов может прервать активные сеансы пользователей.

Профилактика: скрипт обновления COM-регистрации

Ошибка 0x80040154 почти всегда возникает после обновления платформы 1С. Добавьте перерегистрацию в регламент обновления. Вот скрипт, который можно запускать сразу после установки новой версии платформы:

# update-1c-com.ps1 — запускать после каждого обновления платформы 1С
# Параметр: путь к новой папке bin
param([string]$NewBinPath)

if (-not $NewBinPath) {
    # Автоопределение последней версии
    $base = "C:\Program Files\1cv8"
    $NewBinPath = Get-ChildItem $base -Directory |
        Sort-Object Name -Descending |
        Select-Object -First 1 |
        ForEach-Object { "$($_.FullName)\bin" }
    Write-Host "Автовыбор: $NewBinPath"
}

$dll = Join-Path $NewBinPath "comcntr.dll"
if (-not (Test-Path $dll)) {
    Write-Error "Файл не найден: $dll"; exit 1
}

# Снимаем все старые регистрации
Get-ChildItem "C:\Program Files\1cv8" -Recurse -Filter "comcntr.dll" |
    Where-Object { $_.FullName -ne $dll } |
    ForEach-Object {
        Write-Host "Снятие: $($_.FullName)"
        & regsvr32 /s /u $_.FullName
    }

# Регистрируем новую версию
Write-Host "Регистрация: $dll"
& regsvr32 /s $dll
if ($LASTEXITCODE -eq 0) {
    Write-Host "Успешно зарегистрировано" -ForegroundColor Green
} else {
    Write-Error "Ошибка регистрации. Запустите от имени администратора."
}

Сохраните скрипт как update-1c-com.ps1 и добавьте его запуск в регламент обновления платформы — или в задание планировщика, срабатывающее на появление новых подпапок в C:\Program Files\1cv8. Такой подход полностью исключает класс ошибок, связанных с устаревшей регистрацией COM-компонентов.

Итог

Ошибка -2147221164 (0x80040154) в 1С — неприятная, но полностью решаемая. Порядок диагностики:

  1. Проверьте права учётной записи Агента сервера 1С на папку информационной базы — особенно если используется файловая база или сетевой каталог
  2. Перерегистрируйте comcntr.dll через regsvr32 от имени администратора, используя путь к актуальной версии платформы (не старой)
  3. Если не помогло — пересоздайте COM+-приложение V83COMConnector через оснастку «Службы компонентов» и настройте безопасность
  4. Добавьте перерегистрацию DLL в регламент обновления платформы, чтобы ошибка не повторялась

Большинство случаев решается на шаге 2 за 5 минут. Если после всех шагов ошибка остаётся — проверьте, не ссылается ли код конфигурации на устаревший V82COMConnector, и убедитесь, что версии платформы на клиентах и сервере совпадают.

Официальная документация: Microsoft Learn

Часто задаваемые вопросы

Что такое Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение?

Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение — это важный аспект системного администрирования, который позволяет настроить и оптимизировать работу IT-инфраструктуры. В данной статье подробно рассматриваются все ключевые моменты.

Как правильно настроить Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение?

Для корректной настройки Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение необходимо следовать пошаговой инструкции, представленной в статье выше. Важно учитывать особенности вашей инфраструктуры и требования безопасности.

Какие типичные ошибки возникают при работе с Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение?

Наиболее частые ошибки при работе с Ошибка 0x80040154 «Класс не зарегистрирован» в 1С: полный разбор и решение: некорректная конфигурация, недостаточные права доступа и несовместимость версий. Рекомендуем обратиться к специалистам ITFresh для профессиональной настройки.

Нужна помощь специалистов?

ООО «АйТи Фреш» возьмёт это на себя

Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.

15+лет опыта
25+клиентов
40Gсвоя сеть
24/7поддержка