Каталог решений - Еще раз про comconnector

Еще раз про comconnector

Еще раз про comconnector

В наличии

Подключение через com базам с разными версиями платформ ОДНОВРЕМЕННО.

Категория:

Описание

На Инфостарте есть несколько статей (например //sale.itcity.ru/public/610960/). Все уже пережевано 100 раз, но есть нюанс, который я ни у кого не нашел и докопался методом проб и ошибок.

Краткая предыстория:

Копируем существующую компоненту,  переименуем — "имя компоненты" , копируем CLSID, ищем в реестре запись и меняем значение в ветке "InprocServer32" на путь к нужной версии comcntrl.dll. 

В коде вызываем:

Соединитель = Новый ComОбъект("имя компоненты");

 

Но в моем случае требовалось одновременная работа с несколькими версиями. Т.е. один пользователь запускает подключение с версией 1020, а другой 1315. И на подключении второй версии появляется ошибка: -2147024769(0x8007007F): Не найдена указанная процедура.

 

т.е. если вызвать подобный код:

ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");    

ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");

 

на втором подключении вываливается ошибка. Поменять подключения местами — ошибка именно на втором подключении.

Т.е только один одновременно. Замечено также, что есть какой-то таймаут, после которого пользователь может сменить версию платформы.

Не буду описывать танцы с бубном, сразу к решению:

на картинке красным — таймаут и сколько одновременно инстансов может быть запущено. По умолчанию стоял 1 инстанс и 15минут таймаут.

 

has been added to your cart:
Оформление заказа