К статье
Практический материал

Администрирование · 11 мин

Как зарегистрировать COMConnector 1С 8.3

Как зарегистрировать COMConnector 1С 8.3 (comcntr.dll) вручную через regsvr32, исправить ошибку создания объекта и решить конфликт разрядности 32/64 бит.

COMConnector (библиотека comcntr.dll) — это компонент платформы 1С:Предприятие 8.3, который позволяет внешним приложениям и скриптам подключаться к информационной базе через COM-интерфейс. Он используется при обмене данными между базами, в интеграциях с сайтами, в скриптах PowerShell и VBScript, а также в сторонних программах, которые читают или пишут данные в 1С.

Компонент регистрируется автоматически при установке платформы, но на практике регистрация часто слетает: после обновления платформы, при наличии нескольких версий 1С на одном компьютере, при установке 64-разрядного сервера рядом с 32-разрядным клиентом. Признак проблемы — ошибка вида «Ошибка при создании объекта из компоненты comcntr.dll» или «Класс не зарегистрирован» при вызове NewObject("V83.COMConnector").

Исправить ситуацию можно вручную через утилиту regsvr32, но важно учитывать разрядность системы, версию платформы и права доступа. Ниже разобраны все сценарии: от простой регистрации до диагностики конфликтов версий.

Что такое COMConnector и когда нужна его регистрация

COMConnector — это COM-объект, который создаётся вызовом V83.COMConnector и предоставляет метод Connect() для подключения к файловой или серверной базе. Через полученное соединение внешний код получает доступ к объектам базы: справочникам, документам, запросам. Файл компонента называется comcntr.dll и лежит в подкаталоге bin каталога установленной платформы, например: C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll.

Регистрация требуется в типовых ситуациях: скрипт обмена перестал работать после обновления платформы, на компьютере появилась вторая версия 1С и COM-объект стал указывать на неё, интеграция запускается под 64-разрядным процессом, а зарегистрирована 32-разрядная библиотека. Во всех этих случаях Windows не может создать COM-объект, и единственный способ восстановить работу — явно зарегистрировать нужную DLL.

Подготовка: узнайте версию платформы и разрядность системы

Перед регистрацией определите три вещи: точный номер версии платформы, путь к comcntr.dll и разрядность процесса, который будет использовать коннектор. Версию видно в окне «О программе» любой базы или в списке каталогов внутри C:\Program Files\1cv8 (для 64-разрядной платформы) либо C:\Program Files (x86)\1cv8 (для 32-разрядной).

Разрядность критична: 32-разрядное приложение (например, 32-битный скриптовый хост или старая внешняя программа) сможет загрузить только 32-разрядную comcntr.dll, а 64-разрядное — только 64-разрядную. Если разрядности не совпадают, регистрация пройдёт успешно, но создание объекта всё равно завершится ошибкой. Узнать разрядность Windows можно через «Параметры → Система → О системе», строка «Тип системы».

Ошибка «Класс не зарегистрирован»COM-объект не найден в реестре

Зарегистрирована ли вообще comcntr.dll и какой версии

Ошибка после обновления платформыРеестр указывает на старый каталог

Какая версия лежит в пути из реестра и существует ли она

Ошибка только в одном приложенииНесовпадение разрядности

Разрядность вызывающего процесса и зарегистрированной DLL

Регистрация comcntr.dll через командную строку

Основной способ — утилита regsvr32, запущенная из командной строки с правами администратора. Откройте меню «Пуск», введите cmd, щёлкните правой кнопкой по «Командная строка» и выберите «Запуск от имени администратора». Без повышенных прав regsvr32 не сможет записать данные в ветку реестра HKEY_CLASSES_ROOT и вернёт ошибку.

Для 64-разрядной платформы на 64-разрядной Windows выполните команду с полным путём к библиотеке:

cmd
regsvr32 "C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll"

Для 32-разрядной платформы на 64-разрядной Windows нужно использовать 32-разрядную версию regsvr32 из каталога SysWOW64, иначе библиотека зарегистрируется в неправильном разделе реестра:

cmd
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.22.1750\bin\comcntr.dll"

Признак успеха — диалоговое окно «DllRegisterServer in ... succeeded». Если вместо него появляется ошибка 0x80070005, не хватает прав администратора; ошибка о невозможности загрузить модуль означает неверный путь или отсутствие самого файла.

Порядок действий
  1. 1
    Определите версию платформы и путь к comcntr.dll в каталоге bin
  2. 2
    Откройте командную строку от имени администратора
  3. 3
    Выполните regsvr32 с полным путём к DLL, учитывая разрядность
  4. 4
    Убедитесь, что появилось сообщение об успешной регистрации
  5. 5
    Проверьте создание объекта тестовым скриптом

Регистрация через планировщик заданий и пакетный файл

Если регистрацию нужно выполнять регулярно — например, после каждого обновления платформы на рабочих местах, — удобно оформить команду в bat-файл. Создайте текстовый файл с расширением .bat, поместите в него строку regsvr32 с актуальным путём и запускайте от имени администратора. Для тихой регистрации без диалогового окна добавьте ключ /s: regsvr32 /s "путь\comcntr.dll".

При массовом развёртывании через доменные политики или системы управления конфигурацией bat-файл можно выполнять через планировщик задач с запуском от системной учётной записи. Учитывайте, что при обновлении платформы номер версии в пути меняется, поэтому скрипт либо должен определять каталог динамически, либо его нужно актуализировать вместе с обновлением.

Проверка результата и типичные ошибки

Проверить регистрацию проще всего коротким скриптом. Создайте файл test.vbs с содержимым Set conn = CreateObject("V83.COMConnector") и запустите его той же разрядностью, под которой будет работать интеграция. Если объект создался без ошибок — регистрация корректна. Само подключение к базе на этом этапе можно не выполнять: достаточно факта создания COM-объекта.

В реестре зарегистрированный компонент виден в ветке HKEY_CLASSES_ROOT\V83.COMConnector\CLSID, а путь к DLL — в HKEY_CLASSES_ROOT\CLSID\{идентификатор}\InprocServer32. Для 32-разрядной библиотеки на 64-разрядной системе записи попадают в Wow6432Node. Это удобный способ убедиться, какая именно версия платформы сейчас «отвечает» за COM-подключения.

Типичные ошибки
01
Запуск regsvr32 без прав администратора — регистрация молча не выполняется или возвращает 0x80070005
02
Регистрация 32-разрядной DLL системным regsvr32 вместо SysWOW64 — объект недоступен для 32-битных приложений
03
Указание пути к старой версии платформы — после удаления старой версии интеграция снова ломается
04
Регистрация DLL с сервера на клиентской машине вместо локальной копии — ошибки доступа и зависание COM-объекта
Контрольные точки

Как проверить результат

Создание объекта V83.COMConnector в тестовом скрипте
Норма

Объект создаётся без ошибок

Тревожный признак

«Класс не зарегистрирован» или «Невозможно создать объект»

Сообщение regsvr32 при регистрации
Норма

DllRegisterServer succeeded

Тревожный признак

Код ошибки 0x80070005 или «модуль не найден»

Путь в InprocServer32 реестра
Норма

Указывает на актуальную версию платформы

Тревожный признак

Указывает на удалённый или устаревший каталог

Конфликт нескольких версий платформы и разрядности

На одном компьютере одновременно может быть зарегистрирован только один экземпляр comcntr.dll для каждой разрядности. Если установлены платформы 8.3.20 и 8.3.22, последняя зарегистрированная версия «перекроет» предыдущую. Это важно, когда разные интеграции требуют разных версий: единственный надёжный выход — использовать одну актуальную версию коннектора, поскольку платформа 8.3 обратно совместима по COM-интерфейсу в пределах линейки.

Отдельная проблема — 64-разрядный сервер 1С и 32-разрядные клиентские приложения. На сервере регистрируйте ту разрядность comcntr.dll, которая соответствует процессу, создающему COM-объект, а не разрядности самого сервера 1С. Например, если обмен запускается 32-разрядной службой, на сервере нужна 32-разрядная comcntr.dll из дистрибутива тонкого/толстого клиента.

Маршрут решения

Как выбрать действие

Интеграция работает под 64-разрядным процессомРегистрируйте comcntr.dll из C:\Program Files\1cv8 системным regsvr32
Интеграция работает под 32-разрядным процессом на 64-битной WindowsИспользуйте regsvr32 из SysWOW64 и DLL из Program Files (x86)
После обновления платформы обмен сломалсяПеререгистрируйте comcntr.dll из каталога новой версии
Нужны одновременно две версии коннектораОставьте одну актуальную версию — параллельная регистрация двух версий одной разрядности невозможна

Ограничения и меры предосторожности

COMConnector нагружает базу так же, как полноценный клиентский сеанс: на файловой базе массовые обмены через COM могут блокировать работу пользователей, а на серверной — потребляют лицензии. Не запускайте тяжёлые COM-обмены в разгар рабочего дня без тестирования на копии базы.

Перед любыми манипуляциями с реестром и регистрацией компонентов на рабочем сервере создайте точку восстановления или экспортируйте изменяемые ветки реестра. Ошибочная регистрация DLL из несуществующего пути или удаление чужих записей в HKEY_CLASSES_ROOT может нарушить работу не только 1С, но и других COM-приложений.

Если интеграция запускается планировщиком заданий, проверяйте разрядность именно того процесса, который указан в задании: wscript.exe и cscript.exe существуют в 32- и 64-разрядных вариантах, и по умолчанию планировщик может вызывать не тот, который вы тестировали вручную.
ПЗ
Практическое замечание

Частые вопросы

Где взять comcntr.dll, если файла нет в каталоге платформы?

Библиотека устанавливается вместе с компонентами платформы. Если файла нет, запустите установщик платформы в режиме изменения и убедитесь, что выбраны компоненты клиентской части. Копировать DLL с другого компьютера не рекомендуется: версии файла и остальной платформы могут не совпасть.

Можно ли зарегистрировать COMConnector без прав администратора?

Штатный regsvr32 требует прав администратора, так как пишет в HKEY_CLASSES_ROOT. Существуют обходные сценарии с регистрацией в разделе текущего пользователя (registration-free COM), но для 1С это нестандартный путь, который требует подготовки manifest-файлов и обычно не применяется.

Почему после регистрации всё равно ошибка «Класс не зарегистрирован»?

Чаще всего причина в несовпадении разрядности: приложение 32-разрядное, а зарегистрирована 64-разрядная DLL, или наоборот. Проверьте разрядность вызывающего процесса в диспетчере задач и перерегистрируйте библиотеку соответствующей разрядности через правильный regsvr32.

Как отменить регистрацию comcntr.dll?

Выполните команду regsvr32 с ключом /u и тем же путём к файлу: regsvr32 /u "путь\comcntr.dll". Это удаляет записи о компоненте из реестра. Обычно отмена не требуется — достаточно зарегистрировать актуальную версию поверх старой.

Нужно ли регистрировать COMConnector на сервере 1С?

Только если на самом сервере выполняются скрипты или приложения, подключающиеся к базам через COM. Для обычной работы сервера предприятия и клиентских подключений по протоколу 1С регистрация comcntr.dll не требуется.

Чем COMConnector отличается от Automation-сервера V83.Application?

V83.Application запускает полноценный экземпляр клиентского приложения 1С и подходит для сценариев, где нужна логика клиента. V83.COMConnector создаёт лёгкое COM-соединение без интерфейса, работает быстрее и чаще применяется для фоновых обменов данными.

Итог

Что важно запомнить

Регистрация сводится к одной команде regsvr32 с правильным путём к comcntr.dll, запущенной от имени администратора. Ключевые условия успеха — совпадение разрядности DLL и вызывающего процесса, актуальная версия платформы в пути и проверка результата тестовым созданием объекта V83.COMConnector.