IDimMacroGroupPrimitive.SendGroupAsParam

Синтаксис Fore

SendGroupAsParam: Boolean;

Синтаксис Fore.NET

SendGroupAsParam: Boolean;

Описание

Свойство SendGroupAsParam определяет, используется ли в макросе группа элементов.

Комментарии

Возможные значения:

Пример Fore

Для выполнения примера в репозитории предполагается наличие справочника с идентификатором «DICT_GROUP», содержащего группу элементов. Также предполагается наличие модуля с идентификатором «MACRO_DIM_EL_GROUP», содержащего класс «Primitives», который реализует функцию «GroupMacro». Данная функция будет использоваться в качестве макроса, формирующего группу элементов. Код модуля «MACRO_DIM_EL_GROUP» приведён ниже.

Добавьте ссылки на системные сборки: Dimensions, Metabase.

Sub UserProc;
Var
    mb: IMetabase;
    Desc: IMetabaseObjectDescriptor;
    Group: IDimElementGroup;
    i: Integer;
    MacroPrimitive: IDimMacroGroupPrimitive;
Begin
    // Получаем текущий репозиторий
    mb := Metabaseclass.Active;
    // Получаем справочник
    Desc := mb.ItemById("DICT_GROUP").Children.Item(0);
    // Проверяем, является ли первый дочерний объект справочника группой элементов
    If Desc.ClassId = 1029 Then
        // Получаем группу элементов для редактирования
        Group := Desc.Edit As IDimElementGroup;
        // Изменяем наименование группы элементов
        (Group As IMetabaseObject).Name := "Элементы, сформированные макросом";
        // Удаляем из группы все примитивы отметки
        i := Group.Count;
        Repeat
            i := i - 1;
            Group.RemovePrimitive(i);
        Until i = 0;
        // Добавляем в группу примитив, являющийся макросом
        MacroPrimitive := Group.AddPrimitive(SelectionGroupType.Macro) As IDimMacroGroupPrimitive;
        // Указываем , что макрос будет использовать группу элементов
        MacroPrimitive.SendGroupAsParam := True;
        // Указываем наименование макроса
        MacroPrimitive.Macro := "MACRO_DIM_EL_GROUP.Primitives.GroupMacro";
        // Сохраняем изменения в группе отметки
        (Group As IMetabaseObject).Save;
    End If;
End Sub UserProc;

Код модуля «MACRO_DIM_EL_GROUP».

Добавьте ссылку на системную сборку Dimensions.

Class Primitives: Object
    
    // Макрос для формирования отметки элементов справочника
    Public Shared Function GroupMacro(Dimension: IDimInstance; DimGroup: IDimElementGroup): IDimSelection;
    Var
        DictSelection, GroupSelection: IDimSelection;
        i: Integer;
    Begin
        // Создаём отметку элементов справочника
        DictSelection := Dimension.CreateSelection;
        // Включаем в отметку три элемента справочника
        DictSelection.SelectElement(0False);
        DictSelection.SelectElement(2False);
        DictSelection.SelectElement(5False);
        // Получаем отметку группы элементов
        GroupSelection := DimGroup.Selection;
        // Включаем в отметку элементов справочника отметку группы элементов
        For i := 0 To GroupSelection.SelectedCount - 1 Do
            DictSelection.SelectElement(GroupSelection.Element(0), False);
        End For;
        // Возвращаем созданную отметку элементов справочника
        Return DictSelection;
    End Function GroupMacro;
    
End Class Primitives;

В результате выполнения примера во всех объектах, использующих справочник «MACRO_DIM_EL_GROUP» в качестве измерения, будет доступна группа элементов «Элементы, сформированные макросом», формируемая макросом «MACRO_DIM_EL_GROUP».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    Desc: IMetabaseObjectDescriptor;
    Group: IDimElementGroup;
    i: Integer;
    MacroPrimitive: IDimMacroGroupPrimitive;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем справочник
    Desc := mb.ItemById["DICT_GROUP"].Children.Item[0];
    // Проверяем, является ли первый дочерний объект справочника группой элементов
    If Desc.ClassId = 1029 Then
        // Получаем группу элементов для редактирования
        Group := Desc.Edit() As IDimElementGroup;
        // Изменяем наименование группы элементов
        (Group As IMetabaseObject).Name := "Элементы, сформированные макросом";
        // Удаляем из группы все примитивы отметки
        i := Group.Count;
        Repeat
            i := i - 1;
            Group.RemovePrimitive(i);
        Until i = 0;
        // Добавляем в группу примитив, являющийся макросом
        MacroPrimitive := Group.AddPrimitive(SelectionGroupType.sgtMacro) As IDimMacroGroupPrimitive;
        // Указываем, что макрос будет использовать группу элементов
        MacroPrimitive.SendGroupAsParam := True;
        // Указываем наименование макроса
        MacroPrimitive.Macro := "MACRO_DIM_EL_GROUP.Primitives.GroupMacro";
        // Сохраняем изменения в группе отметки
        (Group As IMetabaseObject).Save();
    End If;
End Sub;

См. также:

IDimMacroGroupPrimitive