Реализуем метод DestroyObject, добавим код в Component.cpp
long DestroyObject(IComponentBase** pIntf)
{
if(!*pIntf)
return -1;
delete *pIntf;
*pIntf = 0;
return 0;
}
Создадим новый файл, в котором опишем экспортные процедуры
Содержимое файла:
LIBRARY "Component.dll"
EXPORTS
GetClassObject
DestroyObject
GetClassNames
Рядом с собранной dll создаем файл MANIFEST.XML, в котором напишем описание нашей компоненты для 1С. Содержимое файла:
<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component os="Windows" path="Component.dll" type="native" arch="x86_64"/>
</bundle>
Попробуем подключить компоненту. Для этого в 1С в дереве метаданных создаем Общий макет, тип макета — Двоичные данные:
Откроется окно загрузки данных, загружаем наш собранный файл ZIP
Для проверки работоспособности создадим обработку, на форме добавим кнопку и пропишем код подключения и обращения к компоненте:
&НаКлиенте
Процедура Проверить(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПодключитьКомпоненту", ЭтаФорма);
НачатьУстановкуВнешнейКомпоненты(ОписаниеОповещения, "ОбщийМакет.Макет");
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьКомпоненту(ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("КомпонентаПодключена", ЭтаФорма);
НачатьПодключениеВнешнейКомпоненты(ОписаниеОповещения, "ОбщийМакет.Макет", "МойМакетAddIn", ТипВнешнейКомпоненты.Native);
КонецПроцедуры
&НаКлиенте
Процедура КомпонентаПодключена(Результат, ДополнительныеПараметры) Экспорт
МояКомпонента = Новый("AddIn.МойМакетAddIn.AddInNativeExtension");
КонецПроцедуры