При обновлении платформы 1С:Предприятие разработчики и системные администраторы нередко сталкиваются с ситуацией, когда ранее стабильно работавший код внешнего подключения перестает функционировать. При попытке подключения к информационной базе возникает исключение вида «{(1)}: Ошибка при вызове метода контекста (Connect)».
Разберем типичный фрагмент кода, на котором происходит этот сбой:
V83COMConnector = Новый COMОбъект("V83.COMConnector");
БазаСоединениеБухгалтерия = V83COMConnector.Connect(СтрокаПодключения);
Проанализируем детально, почему объект COMОбъект("V83.COMConnector") может инициализироваться в операционной системе, но вызов метода Connect завершается аварийно, а также пошагово рассмотрим все способы решения данной проблемы.
При установке новой сборки платформы регистрация COM-компонента в реестре Windows может не обновиться автоматически. В результате операционная система пытается использовать библиотеку comcntr.dll от старой или удаленной версии 1С, что приводит к ошибке при вызове метода Connect.
Разберем по шагам правильную ручную перерегистрацию библиотеки с учетом разрядности операционной системы и платформы:
cmd.exe от имени Администратора.SysWOW64:
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.X.XXXX\bin\comcntr.dll"
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.X.XXXX\bin\comcntr.dll"
Важно: убедимся, что вместо 8.3.X.XXXX указан актуальный номер релиза установленной платформы. После успешного выполнения команды появится системное сообщение об успешной регистрации модуля.
Если на сервере или рабочем компьютере установлено несколько различных версий платформы, ветки системного реестра могут ссылаться на несовместимые версии файлов. Кроме того, фоновые процессы dllhost.exe или процессы кластера 1С (rphost.exe) могут удерживать блокировки на предыдущих версиях библиотек.
Рассмотрим порядок действий для устранения конфликтов:
comcntr.dll актуальной версии.Если 32-разрядное приложение пытается инициировать COM-соединение на сервере с 64-разрядной платформой 1С (или наоборот), стандартное прямое подключение завершится ошибкой. В таком случае настроим приложение COM+ для межархитектурного моста.
Разберем процедуру настройки через системную оснастку:
dcomcnfg для открытия консоли «Службы компонентов».1Cv8_COMConnector) и укажем тип активации Серверное приложение (Server Application).comcntr.dll из каталога bin установленной платформы 1С.При вызове метода Connect платформа создает полноценный пользовательский сеанс в подключаемой информационной базе. Проанализируем сопутствующие факторы, вызывающие отказ:
Connect вызовет исключение. Убедимся в наличии свободных лицензий на сервере./UC:
СтрокаПодключения = "Srvr=""Server1C"";Ref=""TargetBase"";Usr=""Admin"";Pwd=""Password"";UC=""КодРазрешения"";";
USR1CV8 должна иметь полные права на системные каталоги временных файлов (%TEMP%, C:\Windows\Temp) и каталоги профиля 1С.Технология COMConnector имеет ряд архитектурных ограничений: она жестко привязана к операционной системе Windows, требует строгого совпадения версий платформ и может приводить к утечкам памяти при длительной передаче больших массивов данных.
Для построения надежной интеграции между информационными базами рекомендуется использовать платформенные веб-технологии: