При обновлении платформы 1С:Предприятие или переносе баз данных разработчики и администраторы нередко сталкиваются с ошибками внешнего подключения. Типичный сценарий — сбой в обработках обмена данными (например, в «Универсальном обмене данными XML»), когда при выполнении программного кода инициализации COM-соединения возникает исключение:
ОбъектПодключения = ОбъектПодключения + ".COMConnector";
ТекCOMПодключение = Новый COMОбъект(ОбъектПодключения);
ТекCOMОбъект = ТекCOMПодключение.Connect(СтрокаПодключения);
В результате система выдает сообщение «Метод объекта не обнаружен (Connect)» или «Ошибка при выполнении операции с информационной базой». Проанализируем причины возникновения этой неполадки и подробно разберем все способы её устранения.
Выясним причину, почему COM-объект создается, но метод Connect оказывается недоступен или завершается аварийно:
comcntr.dll зарегистрирована для другой битности.ProgID V83.COMConnector может ссылаться на старую или удаленную версию comcntr.dll, что приводит к несовместимости с библиотекой ядра core83.dll.USR1CV8), не имеет достаточных прав на активацию DCOM-объектов. Также ошибка может возникать, если внешняя обработка запущена в безопасном режиме платформы 1С.Разберем по шагам базовый способ восстановления работоспособности COM-коннектора через стандартную утилиту регистрации библиотек. Запустим командную строку (cmd) обязательно от имени администратора.
Для 64-разрядного сервера или клиента 1С выполним команду регистрации 64-битной компоненты:
%windir%\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Для 32-разрядного клиента на 64-разрядной операционной системе Windows выполним регистрацию через утилиту из каталога SysWOW64:
%windir%\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Если простая перерегистрация не помогла, снимем регистрацию со старой библиотеки с помощью ключа /u и выполним общую регистрацию платформы:
regsvr32 /u "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll".bin установленной платформы и выполним команду: 1cv8.exe /regserver.comcntr.dll.Когда вызов COM-объекта осуществляется из 64-разрядного процесса к 32-разрядной библиотеке (или наоборот), либо при возникновении конфликта изоляции процессов, настроим отдельное выделенное приложение в оснастке Службы компонентов Windows. Рассмотрим подробный алгоритм настройки:
dcomcnfg через диалог «Выполнить»).V83COMConnector, и обязательно переключим переключатель в положение Серверное приложение. Нажмем Далее.V83COMConnector раскроем узел и перейдем к папке Компоненты.comcntr.dll из каталога bin требуемой версии платформы 1С. Завершим работу мастера.V83COMConnector, перейдем на вкладку Безопасность, снимем флаг Принудительная проверка доступа для приложений, установим флаг Применить политику программных ограничений и зададим Уровень ограничений — Неограниченный.Если ошибка Метод объекта не обнаружен (Connect) продолжает возникать из-за поврежденных веток реестра предыдущих релизов, выполним полную переустановку модуля:
regedit и выполним поиск по значению comcntr.dll, очистив все устаревшие ссылки в разделах HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE\SOFTWARE\Classes и HKEY_CLASSES_ROOT\AppID.V83.COMConnector.Проанализируем ситуацию, когда ошибка возникает только при запуске внешних обработок. Если внешняя обработка подключена через механизм дополнительных отчетов и обработок БСП в безопасном режиме, среда исполнения блокирует создание внешних COM-объектов на уровне платформы.
При программном подключении обработки необходимо передавать признак отключения безопасного режима:
// Отключение безопасного режима при загрузке внешней обработки
ПараметрыПодключения = Новый Структура("БезопасныйРежим", Ложь);
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Если использование COM-соединения вызывает регулярные проблемы при частых обновлениях платформы, рассмотрим переход на современные протоколы интеграции:
V83.Application, который запускает полноценный сеанс клиента 1С.