Создание вычисляемого справочника

Для выполнения примера предполагается наличие в репозитории модуля с идентификатором "UserDimMod", содержащего в себе макрос для построения дерева элементов вычисляемого справочника. Допустим макрос содержит следующий код:

Процедура UserMacro

Sub Main;

Var

MB: IMetabase;

MObj: IMetabaseObject;

Params: IMetabaseObjectParams;

Param: IMetabaseObjectParam;

CrInfo: IMetabaseObjectCreateInfo;

UserDim: IUserDimension;

Attrs: IUserDimAttributes;

Attr: IUserDimAttribute;

Orders: IUserDimOrders;

Block: IUserDimBlock;

BlockAttr: IUserDimIndexAttributes;

Levels: IUserDimLevels;

Begin

MB := MetabaseClass.Active;

CrInfo := MB.CreateCreateInfo;

CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_USERDIM;

CrInfo.Id := "NewUserDim";

CrInfo.Name := "Новый вычисляемый справочник";

CrInfo.Parent := MB.Root;

MObj := MB.CreateObject(CrInfo).Edit;

//Параметры справочника

Params := MObj.Params;

Param := Params.Add;

Param.Id := "i1";

Param.Name := "Количество главных элементов";

Param.DataType := DbDataType.Integer;

Param := Params.Add;

Param.Id := "k1";

Param.Name := "Количество дочерних элементов";

Param.DataType := DbDataType.Integer;

UserDim := MObj As IUserDimension;

Attrs := UserDim.Attributes;

//Создание аттрибутов

Attr := Attrs.Add;

Attr.DataType := DbDataType.Integer;

Attr.Id := "Id";

Attr.Name := "Идентификатор";

Attrs.Id := Attr;

Attr := Attrs.Add;

Attr.DataType := DbDataType.String;

Attr.Id := "Name";

Attr.Name := "Наименование";

Attrs.Name := Attr;

Attr := Attrs.Add;

Attr.DataType := DbDataType.Integer;

Attr.Id := "Order";

Attr.Name := "Порядок";

Attrs.Order := Attr;

//Сортировка по атрибутам

Orders := Attrs.Orders;

Orders.Add(Attrs.Name, False);

Orders.Add(Attrs.Order, False);

//Один блок

Block := UserDim.Blocks.Add;

//Первичный индекс блока по атрибуту Идентификатор

BlockAttr := Block.Indexes.PrimaryIndex.Attributes;

BlockAttr.Add(Attrs.Id);

//Два уровня для справочника

Levels := UserDim.Levels;

Levels.Add.Name := "Первый уровень";

Levels.Add.Name := "Второй уровень";

//Установка модуля и макроса

UserDim.ForeModule := MB.ItemById("UserDimMod").Bind As IModule;

UserDim.ForeSub := "UserMacro";

(UserDim As IMetabaseObject).Save;

End Sub Main;

После выполнения примера в корневом каталоге репозитория будет создан вычисляемый справочник. В справочнике будут созданы три атрибута и один блок, установлен порядок сортировки элементов. В первичный индекс блока будет добавлен атрибут Идентификатор. Будут созданы два уровня справочника и установлен модуль и макрос, осуществляющий построение дерева элементов.

Также для справочника будут созданы два параметра. В случае использования указанного выше макроса для построения дерева элементов, данные параметры будут использоваться для задания количества корневых элементов и количества дочерних элементов для каждого корневого, соответственно.

См. также:

Примеры