Группы элементов

Группы элементов являются скрытыми дочерними объектами справочника. Каждая группа элементов это объект класса MetabaseObjectClass.KE_CLASS_DIMELEMENTGROUP. Для работы с группой элементов необходимо соответствующий дочерний объект справочника привести к типу IDimElementGroup.

Var
    MB: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
    MDescs: IMetabaseObjectDescriptors;
    ElemGroup: IDimElementGroup;
Begin
    MB := MetabaseClass.Active;
    MDesc := MB.ItemById("Dim_1");
    MDescs := MDesc.Children;
    Debug.WriteLine("Группы элементов справочника");
    For Each MDesc In MDescs Do
        If MDesc.ClassId = MetabaseObjectClass.KE_CLASS_DIMELEMENTGROUP Then
            Debug.WriteLine("Наименование: " + MDesc.Name);
            ElemGroup := MDesc.Bind As IDimElementGroup;
            Debug.WriteLine("Количество примитивов: " + ElemGroup.Count.ToString);
        End If;
    End For;

 Для создания группы отметок необходимо создать объект репозитория класса MetabaseObjectClass.KE_CLASS_DIMELEMENTGROUP, для которого в качестве родительского объекта указать справочник репозитория. После открытия созданного объекта на редактирование и приведения к интерфейсу IDimElementGroup можно изменять коллекцию примитивов. Группа элементов представляет из себя набор примитивов, объединенных по методу, указанному в свойстве UnionType. Каждый примитив реализует определенный алгоритм по отбору элементов. Любой примитив является наследником типа IDimElementGroupPrimitive. Доступны следующие виды примитивов:

Var
    MB: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
    Dimension: IDimensionModel;
    CrInfo: IMetabaseObjectCreateInfo;
    Group: IDimElementGroup;
    LvlPrimitive: IDimLevelsGroupPrimitive;
    ChildWhitePrimitive: IDimChildrenWithParentGroupPrimitive;
Begin
    MB := MetabaseClass.Active;
    MDesc := MB.ItemById("Dim_1");
    Dimension := MDesc.Bind As IDimensionModel;
    //Информация для создания группы элементов
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_DIMELEMENTGROUP;
    CrInfo.Id := "Group1";
    CrInfo.Name := "Группа элементов 1";
    CrInfo.Parent := MDesc;
    //Создание группы элементов
    Group := MB.CreateObject(CrInfo).Edit As IDimElementGroup;
    //Указание справочника
    Group.Dimension := Dimension;
    //Способ взаимодействия примитивов
    Group.UnionType := UnionGroupType.Intersection;
    //Создание примитива, возвращающего элементы уровней
    LvlPrimitive := Group.AddPrimitive(SelectionGroupType.Levels) As IDimLevelsGroupPrimitive;
    LvlPrimitive.AddLevel(Dimension.Levels.Item("LEVEL2"));
    //Создание примитива, возвращающего дочерние элементы с родителем
    ChildWhitePrimitive := Group.AddPrimitive(SelectionGroupType.ChildrenWithParent) As IDimChildrenWithParentGroupPrimitive;
    ChildWhitePrimitive.Selection.SelectElement(0False);
    (Group As IMetabaseObject).Save;

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

См. также:

Дополнительные объекты справочников