IBindingDimCombo.Group

Синтаксис Fore

Group: String;

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

Group: String;

Описание

Свойство Group определяет значение параметра «GROUP» в строке связи.

Комментарии

Параметр «GROUP» определяет идентификатор группы элементов, которая ограничит элементы, доступные в редакторе.

Свойство Group доступно для использования, если свойству GroupDefined установлено значение True. При изменении свойства Group свойству GroupDefined автоматически устанавливается значение True.

Пример Fore

Function CreateDimComboBinding(Dimension: IMetabaseObjectDescriptor): String;
Var
    BM: IBindingManager;
    DimChildren: IMetabaseObjectDescriptors;
    DimModel: IDimensionModel;
    DimInst: IDimInstance;
    Selection: IDimSelection;
    Group: IDimElementGroup;
    Schema: IDimSelectionSchema;
    RdsDict: IRdsDictionary;
    LvlKey, AttrKey: Integer;
    DimComboBinding: IBindingDimCombo;
Begin
    BM := New BindingManager.Create;
    DimModel := Dimension.Bind As IDimensionModel;
    DimChildren := Dimension.Children;
    //Настройка параметров
    DimComboBinding := BM.CreateByUi("DimCombo"As IBindingDimCombo;
    //Проверка наличия группы элементов и схемы отметки
    //Предполагается, что первый дочерний объект - группа элементов,
    //второй - схема отметки
    If DimChildren.Count >= 2 Then
        Group := DimChildren.Item(0).Bind As IDimElementGroup;
        Schema := DimChildren.Item(1).Bind As IDimSelectionSchema;
        DimComboBinding.Group := (Group As IMetabaseObject).Id;
        DimComboBinding.Schema := (Schema As IMetabaseObject).Id;
        //Формирование значений из наименований
        DimInst := Dimension.Open(NullAs IDimInstance;
        Selection := DimInst.CreateSelection;
        Schema.ProcessInplace(Selection, Group);
        DimComboBinding.ValueAttribute := "NAME";
        DimComboBinding.ValueDefined := True;
        DimComboBinding.Value := Selection.ToString;
    End If;
    //Идентификаторы в качестве наименования элементов уровня, если уровень существует
    If DimModel.Levels.Count >= 1 Then
        LvlKey := DimModel.Levels.Item(0).Key;
        AttrKey := DimModel.Attributes.Id.Key;
        DimComboBinding.LevelAttribute := "0{" + LvlKey.ToString + "*" + AttrKey.ToString + "}";
    End If;
    DimComboBinding.Object := Dimension.Id;
    //Если справочник НСИ из репозитория НСИ, то устанавливаем параметр RDS
    If Dimension.Bind Is IRdsDictionary Then
        RdsDict := Dimension.Bind As IRdsDictionary;
        If RdsDict.RdsDatabaseInstance <> Null Then
            DimComboBinding.Rds := (RdsDict.RdsDatabaseInstance.Database As IMetabaseObject).Id;
        End If;
    End If;
    //Множественная отметка
    DimComboBinding.SelectionMode := SelectionModeEnum.MultiSelect;
    //Шаблон для формирования наименования при множественной отметке
    DimComboBinding.CustomMultiselectText := "Диапазон: %First-%Last";
    Return DimComboBinding.AsString;
End Function CreateDimComboBinding;

Данная функция генерирует строку связи для использования редактора значения в виде раскрывающегося списка справочника. В качестве входного параметра «Dimension» передается описание справочника. В зависимости от структуры справочника в настройках редактора будут заданы: группа элементов и схема отметки, формат наименований элементов первого уровня, для  справочника НСИ будет указан репозиторий НСИ, в котором он хранится. Значение в ячейке будет формироваться с помощью наименований элементов.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Rds;

Function CreateDimComboBinding(Dimension: IMetabaseObjectDescriptor): String;
Var
    BM: BindingManager = New BindingManagerClass();
    DimChildren: IMetabaseObjectDescriptors;
    DimModel: IDimensionModel;
    DimInst: IDimInstance;
    Selection: IDimSelection;
    Group: IDimElementGroup;
    Schema: IDimSelectionSchema;
    RdsDict: IRdsDictionary;
    LvlKey, AttrKey: UInteger;
    DimComboBinding: IBindingDimCombo;
Begin
    DimModel := Dimension.Bind() As IDimensionModel;
    DimChildren := Dimension.Children;
    //Настройка параметров
    DimComboBinding := BM.CreateByUi("DimCombo"As IBindingDimCombo;
    //Проверка наличия группы элементов и схемы отметки
    //Предполагается, что первый дочерний объект - группа элементов,
    //второй - схема отметки
    If DimChildren.Count >= 2 Then
        Group := DimChildren.Item[0].Bind() As IDimElementGroup;
        Schema := DimChildren.Item[1].Bind() As IDimSelectionSchema;
        DimComboBinding.Group := (Group As IMetabaseObject).Id;
        DimComboBinding.Schema := (Schema As IMetabaseObject).Id;
        //Формирование значений из наименований
        DimInst := Dimension.Open(NullAs IDimInstance;
        Selection := DimInst.CreateSelection();
        Schema.ProcessInplace(Selection, Group);
        DimComboBinding.ValueAttribute := "NAME";
        DimComboBinding.ValueDefined := True;
        DimComboBinding.Value := Selection.ToString("NAME"","False);
    End If;
    //Идентификаторы в качестве наименования элементов уровня, если уровень существует
    If DimModel.Levels.Count >= 1 Then
        LvlKey := DimModel.Levels.Item[0].Key;
        AttrKey := DimModel.Attributes.Id.Key;
        DimComboBinding.LevelAttribute := "0{" + LvlKey.ToString() + "*" + AttrKey.ToString() + "}";
    End If;
    DimComboBinding.Object := Dimension.Id;
    //Если справочник НСИ из репозитория НСИ, то устанавливаем параметр RDS
    If Dimension.Bind() Is IRdsDictionary Then
        RdsDict := Dimension.Bind() As IRdsDictionary;
        If RdsDict.RdsDatabaseInstance <> Null Then
            DimComboBinding.Rds := (RdsDict.RdsDatabaseInstance.Database As IMetabaseObject).Id;
        End If;
    End If;
    //Множественная отметка
    DimComboBinding.SelectionMode := SelectionModeEnum.semodMultiSelect;
    //Шаблон для формирования наименования при множественной отметке
    DimComboBinding.CustomMultiselectText := "Диапазон: %First-%Last";
    Return DimComboBinding.AsString;
End Function;

См. также:

IBindingDimCombo