Что это такое.
Это dll. Внутри класс, реализующий интерфейсы IInitDone и ILanguageExtender.
В принципе, как и чего разобраться вполне можно, благо я нашел соотвествующую tlb.
Но работать оно не хочет. Точнее, 1С ругается на невозможность создания объекта Addin.ARunApp
Притом из VB такая штука создается и работает.
Примеров создания ВК в сети масса. Но в основном это C# или Дельфи. На ВБ не нашел ничего. Да и с интерфейсами раньше работать не приходилось.
Может кто-нить чем-нить помочь?
Ах, да. Нашел еще вот такую штуку:
http://soaron.fromru.com/vkhints.htm
- Код: Выделить всё
1.1 Классификация
1.1.1. ВК - Внешняя компонента.
1.1.2. COM-объект - двоичный код выполняющий какую-либо функцию.
1.1.3. COM-Интерфейс - описание методов и свойств необходимых для правильного обращения клиента к COM-объекту, а объекту правильно ответить клиенту.
1.1.4. COM-класс(со-класс) - объединение интерфейсов. Нельзя обратиться к COM - интерфейсу непосредственно, а только через со-класс.
1.1.5. Библиотека типов - это файл содержащий список свойств, методов, интерфейсов и т.д. COM-объекта.
1.1.6. GUID(Globally Unique IDentifier) идентификатор интерфейсов или класса обеспечивающий его уникальность перед другими интерфейсами.
1.1.7. CLSID - GUID класса.
1.1.8. Счетчик ссылок - число процессов, которые в данным момент используют COM - объект.
1.1.9. ProcID - Идентификатор COM-Сервера
1.1.10. In-process server - библиотека COM-объект, которая запускается в одном адресном пространстве с программой-клиентом.
1.2 Опыт
1.2.1. АРХИВАЖНО!!! GUID's всех стандартных интерфейсов которые экспортируются компонентой должны равнятся GUID's указанных в примерах.
IInitDone={AB634001-F13D-11D0-A459-004095E1DAEA}
IPropertyBag={55272A00-42CB-11CE-8135-00AA004BB851}
IPropertyProfile={AB634002-F13D-11D0-A459-004095E1DAEA}
IAsyncEvent={AB634004-F13D-11D0-A459-004095E1DAEA}
ILanguageExtender={AB634003-F13D-11D0-A459-004095E1DAEA}
IStatusLine={AB634005-F13D-11D0-A459-004095E1DAEA}
IExtWndsSupport={EFE19EA0-09E4-11D2-A601-008048DA00DE}
1.2.2. Методы Init и Done интерфейса IInitDone вызываются 1с n+1 раз, где n - количество объектов экспортируемых компонентой. Надо внимательно в этих методах работать с динамической памятью.
1.2.3. Метод IsPropReadable интерфейса ILanguageExtender не вызывается в текущих версиях платформы 1с. Отсюда все свойства доступны для чтения, с момента подключения компоненты.
1.2.4. Для использования интерфейса AppDispatсh необходимо у него вызвать метод AddRef, который увеличивает счетчик ссылок на объект интерфейса. В противном случае происходит зависание 1с при закрытии программы. В Delphi для предотвращения зависания 1С необходимо включить следующий код (в качестве примера):
// В собственном методе пишем и все работает !!!!!
// никаких дополнительных строк кода больше не надо
var
obj : IDispatch;
obj0 : Variant;
begin
obj := OleVariant(pConn).AppDispatch;
obj._AddRef;
obj0 := Variant(obj).CreateObject('Справочник.Сотрудники');
obj0.ВыбратьЭлементы;
... и так далее
1.2.5. АРХИВАЖНО!!! Подключение компоненты можно выполнить двумя способами, через
ЗагрузитьВнешнююКомпоненту("<имя файла внешней компоненты с расширением, но без пути>"); Тогда ProgID задающийся в компоненте = "AddIn.<имя файла внешней компоненты без расширения>" или ProgID="AddIn.<Ni>", где Ni есть строка вида "<Имя1>[|<Имя2>][|<Имя3>]...[|<Имяi>]". Эта строка задается в файле ресурсов (*.RC) под идентификатором 100. 1с сама зарегистрирует компоненту как COM сервер. Также можно перед подключением самому сначала зарегистрировать ее (regsvr32 <Имя вашей dll>), а подключать при помощи ПодключитьВнешнююКомпоненту("<ProgID>"), где <ProgID> может иметь вид "<ProgID1>[|<ProgID2>]...[|<ProgIDn>]". Во втором случае необязательно нахождение компоненты в папке с БД, точнее она может располагаться где угодно, в пределах локального компьютера поскольку любая компонента по классификации является In-process server'ом.
1.2.6. Для того чтобы передать в метод 1С параметр по умолчанию из ВК, необходимо этот параметр приравнять значению константы varUnknown
($D,0xD), а не VT_EMPTY ($0,0x0).
Честно говоря не представляю себе, как проверить соответствие GUIDов..