Имя: Пароль:
1C
 
Ошибка при обращении к OLE Automation серверу 1C из внешней компоненты
0 Evfarion
 
14.12.09
16:13
Есть COM-Компонента, написанная на Делфи, функции внешней компоненты вызываются без проблем, а при попытке обратиться к 1С из внешней компоненты толстый клиент возвращает ошибку:
"Access violation at address 27442BC6 in module 'addncom.dll'. Read of address 00000024.". Тонкий и веб - тупо игнорируют вызов.
При чем та же компонента на 8.1 работает без ошибок.
С чем этом может быть связано?
1 Rie
 
14.12.09
16:15
(0) Точно v7?
Если v8 - то для 8.2 внешние компоненты несколько отличаются от внешних компонент для предыдущих версий.
Возможно, ты манипулируешь памятью сильно не так, как это положено в 8.2.
2 Evfarion
 
14.12.09
16:58
Точно 8.2, я с флагом промахнулся
3 Evfarion
 
14.12.09
17:04
1С дакларировали ведь полную подрержку старых внешних компонент.
Да и разници между COM интерфейсами в 8.1 и 8.2 что-то нигде не могу вычитать, вот и ломлюсь по-старому.
Инициализация:

 i1cv:=pConnection;

 iError:=nil;
 pConnection.QueryInterface(IID_IErrorLog,iError);

 iStatus:=nil;
 pConnection.QueryInterface(IID_IStatusLine,iStatus);

 iEvent := nil;
 pConnection.QueryInterface(IID_IAsyncEvent,iEvent);

 iExtWindows:=nil;
 pConnection.QueryInterface(IID_IExtWndsSupport,iExtWindows);

 obj := OleVariant(i1cv).AppDispatch;

По жмаканью кнопки в 1С вызывается:

OleVariant(glObj^).ЗавершитьРаботуСистемы();

По логам на этой строке и падает.
4 Evfarion
 
14.12.09
17:04
что я не так с тегами сделал?
5 v77
 
14.12.09
17:07
Обычно помогает отладчик. glObj это чо?
6 Evfarion
 
14.12.09
17:26
(5) Указатель на obj
7 loh_pedalny
 
14.12.09
18:43
А если дернуть какой-нить другой метод глобального контекста - работает?
8 Evfarion
 
15.12.09
10:24
неа, даже банальный "сообщить" не работает. Пробовал и другие компоненты подключать - то же самое. Правда, все самописные.
9 loh_pedalny
 
15.12.09
13:36
пиши в суппорт. наверняка косяк где-то...
Независимо от того, куда вы едете — это в гору и против ветра!