Skip to content

tapapax/Addin1C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Эта библиотека является враппером для интерфейса компонент, использующих технологию 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() строка

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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published