Администрирование · 10 мин
Как зарегистрировать COM-соединитель 1С
Как зарегистрировать COM-соединитель 1С: regsvr32 для comcntr.dll, утилита RegComConnector, разрядность, типичные ошибки и проверка подключения из скрипта.
COM-соединитель (COMConnector) — это внешняя компонента платформы 1С:Предприятие, которая позволяет обращаться к информационной базе из внешних программ, скриптов VBScript/JScript, PowerShell и других приложений Windows. Чтобы операционная система могла создать объект V83.COMConnector, библиотека comcntr.dll должна быть зарегистрирована в системном реестре. Без этой регистрации любая попытка подключения заканчивается ошибкой «Невозможно создать объект».
Регистрация требуется в нескольких типовых сценариях: после установки платформы 1С без компонента COM-соединения, после обновления версии платформы, при переносе базы на новый сервер, а также когда интеграционный скрипт внезапно перестаёт работать. Процедура занимает несколько минут, но требует прав администратора и понимания разрядности компонентов.
Ниже разобраны все способы регистрации: через команду regsvr32, через штатную утилиту установщика, а также проверка результата, типичные ошибки и ограничения по разрядности и безопасности.
Что такое COM-соединитель и когда нужна регистрация
COM-соединитель — это библиотека comcntr.dll, которая поставляется вместе с платформой 1С:Предприятие и находится в каталоге bin конкретной версии (например, C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll). Через неё внешний код создаёт объект V83.COMConnector, вызывает метод Connect со строкой подключения и получает доступ к объектам базы: справочникам, документам, запросам.
Регистрация — это запись сведений о COM-классе в реестр Windows (ветка HKEY_CLASSES_ROOT\CLSID). Windows по ProgID «V83.COMConnector» находит путь к DLL и загружает её в процесс вызывающего приложения. Если записей нет или они указывают на несуществующий файл, создание объекта завершается ошибкой.
Типовые ситуации, когда регистрация обязательна:
- платформа установлена без компонента «COM-соединение» (в установщике его можно не выбрать);
- обновлена версия платформы — старая запись в реестре указывает на удалённый каталог;
- на одном компьютере стоят несколько версий платформы, и нужно, чтобы внешние скрипты использовали конкретную;
- интеграция запускается от имени службы или планировщика на сервере, где регистрация не выполнялась.
Способ 1: регистрация через regsvr32
Штатная утилита Windows regsvr32 — основной способ зарегистрировать comcntr.dll. Команда выполняется в командной строке, запущенной от имени администратора. Для 64-разрядной версии библиотеки:
regsvr32 "C:\Program Files\1cv8\8.3.22.1709\bin\comcntr.dll"Для 32-разрядной библиотеки на 64-разрядной Windows нужно явно вызвать 32-разрядную версию regsvr32 из папки SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.22.1709\bin\comcntr.dll"После успешного выполнения появится диалоговое окно «DllRegisterServer in ... succeeded» (в русской версии — «Успешное выполнение DllRegisterServer»). Если окно не появилось или выдана ошибка — регистрация не выполнена, причину нужно искать по коду ошибки.
- 1Откройте командную строку от имени администратора (Пуск → cmd → Запуск от имени администратора)
- 2Определите путь к comcntr.dll нужной версии платформы в каталоге bin
- 3Выполните regsvr32 с полным путём к DLL, учитывая разрядность
- 4Убедитесь, что появилось сообщение об успешной регистрации
- 5Проверьте создание объекта V83.COMConnector тестовым скриптом
Способ 2: установка компонента через установщик платформы
Если comcntr.dll вообще отсутствует в каталоге bin, значит при установке платформы не был выбран компонент COM-соединения. В этом случае регистрировать нечего — сначала нужно доустановить компонент.
Запустите установщик платформы (setup.exe из дистрибутива той же версии), выберите режим «Изменить» и в дереве компонентов отметьте «COM-соединение» (в некоторых версиях — «Внешнее соединение»). Установщик скопирует библиотеку и, как правило, сам выполнит её регистрацию. После завершения проверьте наличие файла в каталоге bin и при необходимости дополнительно выполните regsvr32.
Этот способ предпочтителен на серверах, где платформу обновляют централизованно: ручная регистрация через regsvr32 после каждого обновления легко забывается, а переустановка компонента из дистрибутива воспроизводима.
Разрядность: главный источник проблем
COM-класс регистрируется в разделе реестра, соответствующем разрядности библиотеки. 32-разрядное приложение (например, 32-битный офисный пакет или 32-битный wscript) увидит только 32-разрядную регистрацию, а 64-разрядное — только 64-разрядную. Несовпадение разрядности — причина большинства ошибок «класс не зарегистрирован».
Какая регистрация нужна
Для 64-битных вызывающих приложений: 64-битный PowerShell, 64-битный wscript/cscript. Регистрируется через System32\regsvr32.exe
Для 32-битных приложений: 32-битный MS Office, 32-битные скрипты на 64-битной ОС. Регистрируется через SysWOW64\regsvr32.exe
Допустимо и часто удобно на сервере, где разные интеграции используют разную разрядность. Конфликта между ними нет
Проверить разрядность исполняемого скрипта просто: по умолчанию на 64-битной Windows wscript и cscript из System32 — 64-разрядные, а их копии в SysWOW64 — 32-разрядные. Если скрипт работает при запуске одним интерпретатором и падает при запуске другим — дело именно в разрядности регистрации.
Проверка результата
После регистрации нужно убедиться, что объект создаётся и подключение к базе выполняется. Простейший тест на VBScript:
Dim connector, connection
Set connector = CreateObject("V83.COMConnector")
Set connection = connector.Connect("File=""C:\Bases\Test"";Usr=""Администратор"";")
WScript.Echo "Подключение успешно: " & connection.Метаданные().Имя
Сохраните код в файл test.vbs и запустите командой cscript test.vbs (или его 32-разрядной версией из SysWOW64 — в зависимости от того, какую регистрацию проверяете). Успешный вывод имени конфигурации означает, что и регистрация, и строка подключения корректны.
Как проверить регистрацию
Окно об успешном выполнении DllRegisterServer
Ошибка 0x80070005 (нет прав) или 0x80004005
CreateObject("V83.COMConnector") выполняется без ошибок
Ошибка «Невозможно создание объекта» / 0x80040154
Метод Connect возвращает объект соединения
Ошибка создания информационной базы — проверяйте строку подключения
Файл существует по пути, указанному при регистрации
Платформа обновлена, каталог старой версии удалён
Типичные ошибки и их причины
Ошибка 0x80070005 (E_ACCESSDENIED) при regsvr32 — командная строка запущена без прав администратора. Перезапустите консоль с повышением прав.
Ошибка «Класс не зарегистрирован» (0x80040154) при создании объекта — регистрация выполнена не для той разрядности, которую использует вызывающее приложение, либо запись в реестре указывает на удалённый каталог версии. Проверьте путь в реестре и повторите регистрацию актуальной DLL.
Ошибка «Модуль загружен, но точка входа DllRegisterServer не найдена» — по указанному пути лежит не та DLL (например, случайно указан файл из другого каталога или повреждённый дистрибутив). Переустановите компонент из дистрибутива платформы.
Ограничения и безопасность
COM-соединение создаёт полноценный сеанс с базой: оно занимает клиентскую лицензию (в клиент-серверном режиме) и выполняет код с правами указанного пользователя. Не храните пароль в открытом виде в скриптах — используйте учётную запись с минимально необходимыми правами и ограничьте доступ к файлу скрипта.
Учтите ограничения технологии: COM-соединитель работает только на Windows, требует совпадения версии библиотеки с версией сервера 1С (для клиент-серверного режима) и не подходит для высоконагруженных сценариев — там лучше использовать HTTP-сервисы или веб-сервисы 1С. Для разовых выгрузок, регламентных обменов и обслуживания баз COM остаётся рабочим и простым вариантом.
Что важно запомнить
COM-соединитель регистрируется командой regsvr32 для comcntr.dll из каталога bin нужной версии платформы с правами администратора. Разрядность regsvr32 должна совпадать с разрядностью DLL и вызывающего приложения. Результат проверяется тестовым скриптом, создающим V83.COMConnector и выполняющим Connect к базе.
Частые вопросы
Чем отличаются V82.COMConnector и V83.COMConnector?
Это ProgID COM-соединителей платформ 8.2 и 8.3 соответственно. Для платформы 8.3 всегда используется V83.COMConnector; имя V82.COMConnector оставлено для совместимости со старыми решениями на платформе 8.2.
Можно ли зарегистрировать COM-соединитель без прав администратора?
Стандартная регистрация через regsvr32 требует прав администратора, так как пишет в HKEY_CLASSES_ROOT. Обходные схемы с регистрацией в разделе пользователя теоретически возможны, но не поддерживаются штатно и не рекомендуются для рабочих сред.
После обновления платформы скрипт перестал работать. Что делать?
Каталог старой версии был удалён, а запись в реестре указывает на него. Выполните regsvr32 для comcntr.dll из каталога bin новой версии платформы и повторите тест подключения.
Работает ли COM-соединитель на Linux?
Нет, COM — технология Windows. На Linux-серверах для интеграции используют HTTP-сервисы, веб-сервисы или механизм внешних источников данных.
Можно ли использовать COM-соединитель из 1С для подключения к другой базе 1С?
Да, это частый сценарий обмена между базами: в коде 1С создаётся объект COMConnector через COMОбъект("V83.COMConnector"), затем выполняется Connect со строкой подключения к целевой базе. Учтите, что сеанс занимает лицензию и держит соединение, пока объект не освобождён.
Что делать, если regsvr32 сообщает об успехе, но объект не создаётся?
Проверьте разрядность вызывающего приложения и зарегистрированной DLL — чаще всего они не совпадают. Запустите скрипт 32-разрядным интерпретатором из SysWOW64 или зарегистрируйте библиотеку нужной разрядности.