Delphi ActiveX Control & 1C
От: theswordfish  
Дата: 02.09.02 10:39
Оценка:
Кто-нибудь знает как на дельфи(6) корректно написать ActiveX для 1С. Проблема в том, что делаю все как описано в 1С, но при инициализации компоненты 1С говорит "Invalid class typecast", и далее "Ошибка при создании объекта из компоненты "такой-то" отсутствует интерфейс IInitDone", хотя, естественно, все интерфейсы присутствуют. К сожалению тоже самое твориться и с поставляемыми примерами компонент 1С. Уже сломал голову, не знаю о чем и думать.

Буду очень и очень признателен если ответите (имееться в виду поможете мне). Спасибо.

С уваж. Алексей. sharalex@riat.ru
Re: Delphi ActiveX Control & 1C
От: Dimentiy Россия  
Дата: 11.09.02 15:47
Оценка:
Здравствуйте theswordfish, Вы писали:

> К сожалению тоже самое твориться и с

> поставляемыми примерами компонент 1С. Уже
> сломал голову, не знаю о чем и думать.

Поставляемые примеры собираются и работают совершенно точно.
Re[2]: Delphi ActiveX Control & 1C
От: theswordfish  
Дата: 12.09.02 05:08
Оценка:
Здравствуйте Dimentiy, Вы писали:

D>Здравствуйте theswordfish, Вы писали:


>> К сожалению тоже самое твориться и с

>> поставляемыми примерами компонент 1С. Уже
>> сломал голову, не знаю о чем и думать.

D>Поставляемые примеры собираются и работают совершенно точно.


Не знаю как уж они собираються и работают, но их (1с-овский) пример с таймером
у меня на Дельфи шестом собираться собирается, но в 1с не работает,
1с говорит, что не реализован интерфейс IInitDone. Хотя конечно, же он реализован.
Я также пытался и свои "пустые" компоненты подключить, которые ничего не делают,
кроме как объявляют себя. Создаю я их следующим образом:

1. New-ActiveX Library
2. Save as "AddIn.dpr"
3. New-Automation Object, CoClass: MyComp
4. В TypeLibrary на странице Uses библиотеки помечаю значком "V7 AddIn 1.0 Type Library"
5. Выбираю в дереве библиотеки лист MyComp на вкладке Implements добавляю IInitDone и ILangaugeExtender
6. Нажимаю на кнопку Refresh, перехожу в редактор кода в Unit1, в разделе Uses добавляю AddInLib, сохраняю его как MyComp, устанавливаю в "Project Options"-"Linker"-"Generate C++ object files". Save All.
7. Добавляю в описание класса TMyComp недостающие методы (хотя вроде как должны были автоматически сгенерироваться)
RegisterExtentionAs, GetNProps, FindProp, GetPropName, Init, Done, GetInfo, их я беру из поставляемого примера.
8. Делаю чтобы все компилировалось.
9. В процедуре RegisterExtensionAs меняю строчку bstrExtensionName := 'MyComp';
10. В секции initialization меняю на
ComServer.SetServerName('AddIn');
TComObjectFactory.Create(ComServer,TMyComp,Class_MyComp,
'TMyComp','V7 AddIn 1.0',ciSingleInstance);
11. Build
12. Copy AddIn в директорию Bin 1с
13. В 1с в модуле добавляю строчку ЗагрузитьВнешнююКомпоненту("AddIn.dll");
14. Запускаю 1с и как следовало ожидать получаю ответ, как и со стандартной (поставляемой, хотя не скрою, отлинкованная, ихняя работает), отсутствует интерфейс IInitDone.

Прям гадость какая-то. И так и сяк пытаюсь, полный нуль. Знаю, что где-то ошибка, но где?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.