Имя: Пароль:
1C
1С v8
Вызов метода через Invoke в 7-ке.
0 max735
 
19.10.11
15:42
Может быть кто-то сталкивался с такой проблемой:
1. В 1С загружаю внешнюю компоненту.
2. Из внешней компоненты, через интерфейс 1С pBackConnection вызываю метод 1С:

DISPID dispid;
BSTR meth_to_do = L"AppDispatch";
hr=m_iConnect->GetIDsOfnames(IID_NULL,&meth_to_do,1,LOCALE_USER_DEFAULT,$dispid);
VARIANT v1;
VariantInit(&v1);
DISPPARAMS params={0,0,0,0};
hr=m_iConnect->Invoke(dispid,IDD_NULL,0,DISPATCH_PROPERTYGET,&params,&v1,NULL,NULL);

Далее идет нужная обработка, в конце выполняю код:
v1.pdispVal->Release();
или так : VariantClear(&v1);

Проблема заключается в том, что если выполнить освобождение v1, то 8-ка выгружается нормально, а 7-ка нет. И наоборот, если не освободить v1, то 8-ка виснет, а 7-ка выгружается нормально.

Еще одно замечание, при выгрузке 7-ки , она ,если не освобождать v1, лишний раз вызывает Done(). (И вообще, 7-ка запрашивает большее количество раз интерфейсы, чем 8-ка). Понятно, что где-то зависает ссылка, но где? Может кто-то сталкивался с подобным?

Заранее спасибо.
Закон Брукера: Даже маленькая практика стоит большой теории.