/Addin1C

Small wrapper for 1C:Enterprise 8.x NativeAPI interface.

Primary LanguageC++

Эта библиотека является враппером для интерфейса компонент, использующих технологию NativeAPI, для платформы 1С:Предприятия 8.x.

Каталог Example содержит пример компоненты. Его можно взять за основу создания своего AddIn'а.

Использование: Для определения класса, публикующегося компонентой, необходимо определить класс-наследник шаблонного класса AddinObject, указав в качестве его параметра шаблона имя определяемого класса. Класс должен содержать статическую функию getMetadata, в которой компонента описывает свой интерфейс, состоящий из методов и свойств. Пример маленького класса:

#include <AddinObject.h>

class Multiplier : public Addin1C::AddinObject<Multiplier> {
public:
	static void getMetadata(Metadata& md) {
		md.addFunction(L"Multiply5", L"УмножитьНа5", 1, &Multiplier::MultiplyWith5);
	}

	static std::wstring getName() {
		return L"Calculator";
	}

	Addin1C::Variant MultiplyWith5(Addin1C::VariantParameters& parameters) {
		long param = parameters[0];
		
		return param * 5;
	}
};

Обязательными для реализация являются статические методы getMetadata и getName.

Кроме определения класса, необходимо определить функцию addinInitialization, выглядеть которая должна примерно так:

void addinInitialization(Addin1C::AddinManager& manager) {
	manager.registerObject<Calculator>();
}

Перечисленные в ней классы будут доступны для создания в коде 1С.

Для передачи значений используется тип Addin1C::Variant. Поддерживаемые типы данных в объекте Addin1C::Variant: bool - булево long - число (целое) double - число (дробное) string* - строка wstring - строка Undefined - неопределено BinaryData* - ДвоичныеДанные

    • только в направлении [компонента -> 1С].

Получение значения из этого объекта осуществляется с помощью шаблонного метода getValue<тип> (или преобразования). Если объект содержит значение другого типа, будет сгенерированно исключение BadCast. Получить идентификатор типа, хранящегося в объекте Variant, можно с помощью метода type.

VariantParameters - это коллекция значений Variant. В нем всегда ровно столько значений, сколько было указано при заполнении метаданных. Функция может изменить значение своих аргументов, все параметры передаются "по ссылке". По-умолчанию все параметры считаются обязательными. Можно определить часть параметров метода необязательными, указав 5-м аргументом функции addFunction их количество. Необязательными могут быть только последние параметры метода. В случае, если в коде на встроенном языке 1С какие-то параметры будут опущены, в качестве их значения компонента получит объект Undefined.

Использование компоненты в коде 1С: Предприятие

ЛюбоеИмяКомпоненты = "ЛюбоеИмяКомпоненты";
Если НЕ ПодключитьВнешнююКомпоненту(ПутьККомпонентеИлиМакетуСНей, ЛюбоеИмяКомпоненты, ТипВнешнейКомпоненты.Native) Тогда
	ВызватьИсключение "Подключить компоненту не удалось!";
КонецЕсли;

Объект = Новый("AddIn." + ЛюбоеИмяКомпоненты + ".ИмяОбъекта"); // ИмяОбъекта - возвращаемая getName() строка

Попытка
	Результат = Объект.РазвернутьСтроку("Тестовая строка");
Исключение
	ВызватьИсключение ОписаниеОшибки() + ": " + Компонента.ОписаниеОшибки();
КонецПопытки;