Group: String;
Group: String;
Свойство Group определяет значение параметра «GROUP» в строке связи.
Параметр «GROUP» определяет идентификатор группы элементов, которая ограничит элементы, доступные в редакторе.
Свойство Group доступно для использования, если свойству GroupDefined установлено значение True. При изменении свойства Group свойству GroupDefined автоматически устанавливается значение True.
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(Null) As 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.
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(Null) As 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;
См. также: