При обновлении платформы 1С:Предприятие (например, на релиз 8.3.24.1667) пользователи часто сталкиваются с тем, что привычная синхронизация между базами (например, 1С:Комплексная автоматизация и 1С:Бухгалтерия или автоматическая синхронизация справочников из ЗУП в Бухгалтерию через COM) перестает работать. Программа выдает ошибку создания COM-объекта, хотя сама компонента кажется зарегистрированной. В этой статье мы подробно разберем, почему это происходит, как правильно зарегистрировать библиотеку comcntr.dll и какие альтернативные способы настройки обмена существуют.
Основная причина кроется в том, что механизм COM-соединения (COM-connector) сильно зависит от окружения операционной системы Windows. Когда мы устанавливаем новую версию платформы, система должна перерегистрировать библиотеку comcntr.dll в реестре, чтобы приложения знали, к какой именно версии платформы обращаться. Рассмотрим основные факторы, которые мешают успешному соединению:
USR1CV8) может не иметь прав на запуск объектов COM.Первое, что мы должны сделать — это правильно зарегистрировать библиотеку вручную. Здесь крайне важно не запутаться в системных папках Windows. Запомним правило: в 64-битных системах папка System32 содержит 64-битные файлы, а папка SysWOW64 — 32-битные.
Если у вас установлен 64-битный сервер 1С, проанализируем путь к библиотеке и выполним команду от имени администратора:
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.24.1667\bin\comcntr.dll"
Если же вы используете 32-битную версию платформы (которая обычно устанавливается в Program Files (x86)), команда будет выглядеть так:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.24.1667\bin\comcntr.dll"
Важный нюанс: После регистрации обязательно перезагрузите службу 1C:Enterprise 8.3 Server Agent, а лучше — весь сервер целиком, чтобы изменения вступили в силу.
Если обычная регистрация через regsvr32 не помогает (ошибка сохраняется или пишет «Отказано в доступе»), рассмотрим более продвинутый метод — создание приложения в COM+. Это позволит компоненте работать в отдельном процессе dllhost.exe под конкретными правами.
Выполним следующие действия:
Win+R и введем dcomcnfg.1C_COM_Connector, и выберем тип «Серверное приложение».comcntr.dll (например, в C:\Program Files\1cv8\8.3.24.1667\bin\).Этот метод решает 90% проблем с доступом, так как изолирует выполнение библиотеки от серверных процессов 1С.
Чтобы понять, видит ли система наш объект V83.COMConnector, мы можем использовать простую команду PowerShell. Это позволит быстро провести диагностику без запуска тяжелых конфигураций 1С. Откроем PowerShell и введем:
$connector = New-Object -ComObject "V83.COMConnector"
$connector
Если в ответ вы получили описание объекта (версию и т.д.), значит, компонента зарегистрирована верно. Если возникла красная ошибка «Класс не зарегистрирован», значит, проблема в реестре или разрядности. Если ошибка «Отказано в доступе» — возвращаемся к настройке COM+ и проверке прав пользователя.
Рассмотрим ситуацию, когда базы находятся на одном физическом сервере. Использование COM-соединения в данном случае не всегда оправдано, так как это «хрупкий» механизм, зависящий от обновлений Windows и платформы 1С. Посмотрим на альтернативу — обмен через сетевой каталог.
В настройках синхронизации данных выберем вариант «Синхронизация через общий каталог». Укажите путь к папке на диске, к которой имеют доступ оба процесса 1С. В этом случае обмен будет происходить через XML или JSON файлы. Также можно использовать универсальный перенос данных между разными конфигурациями, который объединяет технологии COM и HTTP.
Это значительно стабильнее, так как:
Если же вы используете современные протоколы, стоит изучить переход с правил обмена на EnterpriseData или внедрить обмены через брокеры сообщений.
Иногда после множества переустановок разных версий (8.3.20, 8.3.22, 8.3.24) реестр Windows засоряется. Программа пытается вызвать V83.COMConnector, но обращается к ClassID, который указывает на путь старой версии 8.3.20, которой уже нет на диске.
Для решения этой проблемы можно выполнить поиск в реестре (regedit) по ключу {181E7995-CAB9-44D2-97CC-65932DA35675} (это стандартный GUID для COM-коннектора 1С) и убедиться, что параметр InprocServer32 указывает на актуальный путь к bin\comcntr.dll вашей текущей версии платформы. Будьте осторожны при ручном редактировании реестра!
Мы выяснили, что ошибка COM-объекта — это чаще всего вопрос корректной регистрации и прав доступа. Проанализировав проблему, мы рекомендуем следующий алгоритм действий: сначала проверить разрядность и пути в regsvr32, если не помогло — настроить приложение в COM+, а в случае регулярных сбоев — перейти на более современный и стабильный обмен через сетевой каталог или HTTP-сервисы. Например, вы можете внедрить простую сверку документов между любыми конфигурациями через http-сервис для контроля результатов синхронизации.