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

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

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

Пошаговая регистрация comcntr.dll 64-бит для 1С 8.3: regsvr32, права администратора, типичные ошибки, проверка подключения и решение конфликтов версий.

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

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

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

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

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

При установке платформы 1С инсталлятор обычно регистрирует компонент автоматически. Ручная регистрация нужна, если установка выполнялась копированием файлов, если после обновления платформы ссылки в реестре указывают на старую версию, или если компонент был случайно разрегистрирован другой установкой.

Важный момент: в системе одновременно может быть зарегистрирована только одна версия V83.COMConnector. Последняя выполненная команда regsvr32 перезаписывает записи реестра, и все вызовы пойдут через DLL той версии, которая была зарегистрирована последней.

Проверка разрядности и расположения comcntr.dll

64-битная версия comcntr.dll находится в каталоге установки 64-битной платформы: C:\Program Files\1cv8\<номер версии>\bin\comcntr.dll. 32-битная платформа ставится в C:\Program Files (x86)\1cv8\..., и её DLL — 32-разрядная. Перед регистрацией убедитесь, что вы берёте файл именно из нужного каталога.

Разрядность компонента должна совпадать с разрядностью процесса, который его вызывает. 64-битный скрипт или приложение не сможет загрузить 32-битную DLL напрямую, и наоборот. Если интеграция работает из 32-битного приложения (например, из 32-битного офисного пакета), регистрировать нужно 32-битную версию компонента — либо использовать 64-битную и запускать вызов из 64-битного процесса.

Проверить разрядность DLL можно через свойства файла или утилитами анализа PE-заголовков, но проще ориентироваться на путь установки: Program Files — 64 бита, Program Files (x86) — 32 бита.

Регистрация через regsvr32: пошаговая инструкция

Стандартный способ регистрации — системная утилита regsvr32. Она прописывает класс в реестре Windows (ветка HKCR\CLSID и связанные записи), после чего COM-объект становится доступен любым приложениям.

Для 64-битной DLL используется regsvr32 из каталога System32 (несмотря на название, в 64-битной Windows именно там лежит 64-битная версия утилиты). Утилита из SysWOW64 — 32-битная и предназначена для 32-битных библиотек.

Порядок действий
  1. 1
    Откройте командную строку от имени администратора (Пуск → cmd → «Запуск от имени администратора»).
  2. 2
    Выполните: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll" — подставив реальную версию платформы.
  3. 3
    Дождитесь сообщения «DllRegisterServer ... succeeded» — это признак успешной регистрации.
  4. 4
    Проверьте создание объекта тестовым скриптом (см. раздел проверки).

Пример команды для конкретной версии:

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

Если нужно отменить регистрацию (например, чтобы переключиться на другую версию), используйте ключ /u: regsvr32 /u "путь\comcntr.dll". После этого зарегистрируйте нужную версию обычной командой.

Проверка успешной регистрации

Факт регистрации проверяется созданием COM-объекта. Проще всего — скриптом на VBScript или в PowerShell. Сохраните в файл test.vbs строку Set c = CreateObject("V83.COMConnector") и запустите: если ошибки нет, объект создан.

В PowerShell проверка выглядит так: New-Object -ComObject V83.COMConnector. Успешное выполнение без исключения означает, что класс зарегистрирован и DLL загружается. Учтите: PowerShell по умолчанию 64-битный, поэтому проверять 32-битную регистрацию нужно через C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe.

Контрольные точки

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

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

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

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

Ошибка «Класс не зарегистрирован» (80040154)

Версия загруженной DLL
Норма

Совпадает с версией рабочей базы

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

Компонент старой версии, возможны сбои подключения

Пробное подключение к базе
Норма

Connect() возвращает соединение

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

Ошибки аутентификации или несовместимости версий

Типичные ошибки и их устранение

Ошибка 0x80070005 (отказано в доступе) при выполнении regsvr32 означает, что командная строка запущена без прав администратора. Закройте окно и перезапустите cmd с повышением привилегий.

Ошибка «модуль загружен, но точка входа DllRegisterServer не найдена» обычно указывает на то, что указан неверный файл (не та DLL) или файл повреждён. Проверьте путь и целостность каталога платформы; при сомнениях переустановите платформу.

Ситуация «регистрация прошла, но объект не создаётся» почти всегда связана с разрядностью: 64-битная DLL зарегистрирована, а вызов идёт из 32-битного процесса (или наоборот). Определите разрядность вызывающего приложения и приведите пару к соответствию.

Типичные ошибки
01
Регистрация из обычной командной строки без прав администратора — regsvr32 возвращает ошибку доступа, записи в реестр не создаются.
02
Регистрация 32-битной DLL для 64-битного приложения — объект не создаётся, хотя regsvr32 отработал успешно.
03
Регистрация старой версии поверх новой — все интеграции начинают работать через устаревший компонент, возможны ошибки несовместимости.
04
Указание пути без кавычек при пробелах в каталоге — regsvr32 не находит файл.

Конфликт версий и выбор нужной платформы

На сервере часто установлено несколько релизов 8.3 одновременно. Поскольку регистрация одна на всю систему, вызов V83.COMConnector всегда идёт через последнюю зарегистрированную версию. Если база работает на другой версии платформы, возможны ошибки несовместимости при подключении.

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

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

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

На машине одна версия платформыЗарегистрируйте её comcntr.dll и проверьте создание объекта
Несколько версий, база на конкретнойВыполните regsvr32 для DLL именно той версии, на которой работает база
Вызывающее приложение 32-битноеУстановите 32-битную платформу и зарегистрируйте её DLL, либо переведите вызов в 64-битный процесс
Нужны подключения к базам разных версийРассмотрите внешние сервисы или HTTP-интерфейсы вместо единого COMConnector

Альтернативы и ограничения COM-подключения

COMConnector — не единственный способ внешнего подключения. Для межбазовых обменов внутри 1С часто удобнее веб-сервисы, HTTP-сервисы или планы обмена: они не требуют регистрации компонентов и не зависят от разрядности процессов.

У COM-соединения есть и эксплуатационные ограничения: оно создаёт полноценный сеанс с базой, потребляет лицензию и ресурсы сервера, а при аварийном завершении вызывающего процесса сеанс может «зависнуть» до тайм-аута. Для массовых или частых вызовов предпочтительнее сервисная интеграция.

Сравнение вариантов

COMConnector (comcntr.dll)

Быстрое подключение из Windows-приложений; требует регистрации, совпадения разрядности и занимает лицензию сеанса.

HTTP-сервисы 1С

Кроссплатформенно, без регистрации компонентов; требует публикации на веб-сервере и разработки API.

Веб-сервисы (SOAP)

Стандартный обмен с внешними системами; более тяжёлый протокол, тоже требует публикации.

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

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

Нет. ProgID V83.COMConnector один, и записи реестра указывают на единственную DLL. Последняя выполненная команда regsvr32 определяет, какая версия будет использоваться. Для параллельной работы с разными версиями используйте сервисные механизмы интеграции.

Regsvr32 выдаёт ошибку 0x80070005. Что делать?

Это ошибка доступа: командная строка запущена без прав администратора. Закройте её, откройте cmd через «Запуск от имени администратора» и повторите команду. Если ошибка сохраняется под администратором, проверьте антивирусные ограничения и права на ветки реестра.

Объект создаётся, но подключение к базе не устанавливается. В чём причина?

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

Нужно ли перерегистрировать компонент после обновления платформы?

Да, если рабочая версия платформы изменилась. Старая регистрация продолжает указывать на DLL прежнего релиза. Выполните regsvr32 для comcntr.dll из каталога новой версии — записи реестра обновятся.

Как узнать, какая версия comcntr.dll сейчас зарегистрирована?

Откройте редактор реестра и найдите CLSID класса V83.COMConnector в ветке HKCR\CLSID — в подразделе InprocServer32 указан путь к зарегистрированной DLL. По пути видно номер версии платформы и разрядность (Program Files или Program Files (x86)).

Можно ли использовать COMConnector без установки платформы?

Нет. Компонент поставляется в составе платформы и зависит от её библиотек. Копирование одной comcntr.dll на машину без платформы не сработает — потребуется полноценная установка соответствующей версии 1С.

Итог

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

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