При настройке прямого обмена данными между конфигурациями 1С:Управление торговлей 10.3 (на платформе 1С:Предприятие 8.3) и 1С:Бухгалтерия предприятия 3.0 специалисты нередко сталкиваются с критической ошибкой при проверке связи или выгрузке данных. В окне сообщений 1С появляется исключение:
{ОбщийМодуль.ОбщегоНазначения.Модуль(4005)}: Ошибка при вызове конструктора (COMObject) COMConnector = Новый COMObject(ИмяCOMСоединителя); // "V82.COMConnector" по причине: -2147467225(0x80004027): The component or application containing the component has been disabled.
Разберем детально, почему возникает данный сбой, как устроено взаимодействие через COM-соединитель на сервере и как правильно настроить операционную систему Windows и компоненты 1С для восстановления работоспособности синхронизации.
Проанализируем природу ошибки. Код 0x80004027 указывает на то, что компонент или приложение COM+, содержащее этот компонент, отключено администратором, заблокировано политиками безопасности либо ссылается на несуществующую/удаленную динамическую библиотеку.
Рассмотрим две ключевые причины, приводящие к данной ситуации:
dcomcnfg) было вручную настроено приложение COM+ (например, V82_COMConnector), то после удаления старой платформы приложение остается в оснастке, но указывает на удаленный файл comcntr.dll платформы 8.2.dllhost.exe, прямое создание COM-объекта завершается сбоем.V82.COMConnector вместо V83.COMConnector.Посмотрим на программный код создания COM-объекта в 1С:
Попытка
COMConnector = Новый COMObject(ИмяCOMСоединителя);
Исключение
ЗаписьЖурналаРегистрации("Ошибка подключения к базе",
УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
ВызватьИсключение "Не удалось подключиться к другой программе: " + ОписаниеОшибки();
КонецПопытки;
Если переменная ИмяCOMСоединителя содержит устаревшую строку (например, "V82.COMConnector"), вызов конструктора будет обращаться к некорректной ветке реестра Windows.
Выясним, зарегистрирована ли актуальная версия библиотеки внешнего соединения в операционной системе. Регистрацию необходимо выполнять от имени Администратора на том компьютере, где инициируется вызов (на сервере 1С:Предприятия при фоновом обмене или на клиентском ПК при интерактивном запуске толстого клиента).
Разберем команды для регистрации в зависимости от разрядности платформы:
Запустим командную строку cmd.exe от имени администратора и выполним регистрацию 64-битной библиотеки:
regsvr32 "C:\Program Files\1cv8\8.3.10.2667\bin\comcntr.dll"
Также зарегистрируем серверную часть платформы:
"C:\Program Files\1cv8\8.3.10.2667\bin\1cv8.exe" /regserver
Если используется 32-битный клиент или сервер, библиотеку необходимо регистрировать через утилиту из каталога SysWOW64:
C:\Windows\SysWOW64\regsvr32 "C:\Program Files (x86)\1cv8\8.3.10.2667\bin\comcntr.dll"
После успешной регистрации Windows выдаст сообщение: «Успешное выполнение DllRegisterServer в comcntr.dll».
Если простая перерегистрация через regsvr32 не устранила ошибку 0x80004027, это означает, что в системе зарегистрировано серверное приложение COM+, которое блокирует стандартный вызов. Создадим корректное приложение COM+ для платформы 8.3.
Разберем пошаговый порядок действий в оснастке Службы компонентов:
Win + R, введем команду dcomcnfg и нажмем Enter.V82_COMConnector или отключенные компоненты с ошибками, удалим их.V83_COMConnector, и установим переключатель в положение Серверное приложение (Server application). Нажмем Далее.V83_COMConnector, нажмем правой кнопкой мыши на папку Компоненты → Создать → Компонент.comcntr.dll установленной версии 8.3 (например, C:\Program Files\1cv8\8.3.10.2667\bin\comcntr.dll).После применения параметров суррогатный процесс dllhost.exe сможет беспрепятственно обрабатывать межпроцессные и межразрядные вызовы к объекту V83.COMConnector.
Проанализируем конфигурацию узла обмена в самой 1С:Управление торговлей 10.3. В старых релизах типовых конфигураций мастер настройки синхронизации данных запрашивает версию платформы подключаемой информационной базы.
Выполним следующие действия в пользовательском интерфейсе:
"V83.COMConnector" в конструктор COM-соединения.1541 (или 1741, если сервер развернут на альтернативных портах).Прямое COM-подключение требует строгого соответствия версий платформ и тонкой настройки служб Windows при каждом обновлении технологической платформы. Чтобы исключить подобные проблемы в будущем, рассмотрим альтернативные каналы синхронизации:
Таким образом, своевременное удаление неактуальных приложений COM+ для платформы 8.2, регистрация актуальной comcntr.dll версии 8.3 и правильный выбор версии соединителя в параметрах узла обмена позволяют полностью устранить ошибку 0x80004027 и восстановить штатный обмен данными между 1С:УТ 10.3 и 1С:БП 3.0.