IValidationGroup.Params

Синтаксис Fore

Params: IMsModelParams;

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

Params: Prognoz.Platform.Interop.Ms.IMsModelParams;

Описание

Свойство Params возвращает набор параметров для группы правил валидаций.

Комментарии

Для управления параметрами дочерних правил используйте свойство IValidationFilters.ParamControl.

Значения параметров указываются в объекте, создаваемом с помощью метода IValidationGroup.CreateExecuteSettings.

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей компоненты: LanerBox с идентификатором «LanerBox1» и UiErAnalayzer с идентификатором «UiErAnalyzer1». «UiErAnalyzer1» является источником данных для «LanerBox1» и содержит загруженную рабочую книгу БД временных рядов с идентификатором «TSDB_70». Параметры БД:

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

Sub AddFilterGroupParam;
Var
    mb: IMetabase;
    FCObj: IMetabaseObject;
    FC: IRubricator;
    Atts: IMetaAttributes;
    LinkedDict: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilterGroup: IValidationGroup;
    Params: IMsModelParams;
    FilterParam: IMsModelParam;
    Filters: IValidationFilters;
    i: Integer;
    ExecSett: IValidationExecuteSettings;
    Analyzer: IEaxAnalyzer;
    ParamVals: IMsModelParamValues;
    pDimInstance: IDimInstance;
    DimSelect: IDimSelection;
    ExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    mb := MetabaseClass.Active;
    FCObj := mb.ItemById("TSDB_70").Bind;
    FC := FCObj As IRubricator;
    //Получаем справочник, на который ссылается атрибут "COUNTRY"
    Atts := FC.GetDictionary(RubricatorDictionary.Facts).Attributes;
    LinkedDict := Atts.FindById("COUNTRY").ValuesObject;
    //Получаем группу правил валидации    
    ValidObj := Mb.ItemByIdNamespace("VALIDATION_GROUP", FCObj.Key).Edit;
    ValidFilterGroup := ValidObj As IValidationGroup;
    // Задаем пороговое значение для исключений группы правил
    ValidFilterGroup.ExceptionsLimit := 500000;
    // Получаем параметры группы правил валидации
    Params := ValidFilterGroup.Params;
    Params.Clear;
    // Создаем параметр для группы правил валидации   
    FilterParam := Params.Add;
    FilterParam.Id := "FILTER_COUNTRY";
    FilterParam.Name := "Страны для блока фильтрации";
    FilterParam.LinkedObject := LinkedDict;
    // Задаем управляющий параметр
    Filters := ValidFilterGroup.ValidationFilters;
    For i := 0 To Filters.Count - 1 Do
        Filters.ParamControl(i).Item(0).ControllingParam := FilterParam;
    End For;
    // Сохраняем группу правил валидации
    ValidObj.Save;
    // Задаем параметры выполнения группы правил
    ExecSett := ValidFilterGroup.CreateExecuteSettings;
    Analyzer := UiErAnalyzer1.ErAnalyzer;
    ExecSett.Laner := Analyzer.Laner;
    pDimInstance := LinkedDict.Open(NullAs IDimInstance;
    // Создаём отметку для фильтрации элементов
    DimSelect := pDimInstance.CreateSelection;
    DimSelect.DeselectAll;
    DimSelect.SelectElement(0False);
    DimSelect.SelectElement(1False);
    DimSelect.SelectElement(2False);
    // Задаем значения параметра
    ParamVals := ExecSett.ParamValues;
    ParamVals.FindById("FILTER_COUNTRY").Value := DimSelect.ToVariant;
    ExecRun := ValidFilterGroup.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create;
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterGroupParam;

Результат выполнения примера: для группы правил «VALIDATION_GROUP» задан параметр, управляющий параметрами дочерних валидаций. Группа правил будет выполнена для рабочей книги, отображаемой в «LanerBox1».

Пример Fore.NET

Для выполнения примера предполагается наличие формы .NET, содержащей компоненты: LanerBoxNet с идентификатором «lanerBoxNet1» и UiErAnalayzerNet с идентификатором «uiErAnalyzerNet1». «uiErAnalyzerNet1» является источником данных для «lanerBoxNet1» и содержит загруженную рабочую книгу БД временных рядов с идентификатором «TSDB_70». Параметры БД:

Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Rds;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Dimensions;

Sub AddFilterGroupParam();
Var
    mb: IMetabase;
    FCObj: IMetabaseObject;
    FC: IRubricator;
    Atts: IMetaAttributes;
    LinkedDict: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilterGroup: IValidationGroup;
    Params: IMsModelParams;
    FilterParam: IMsModelParam;
    Filters: IValidationFilters;
    i: Integer;
    ExecSett: ValidationExecuteSettings;
    Analyzer: EaxAnalyzer;
    ParamVals: IMsModelParamValues;
    pDimInstance: IDimInstance;
    DimSelect: IDimSelection;
    ExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    mb := Self.Metabase;
    FCObj := mb.ItemById["TSDB_70"].Bind();
    FC := FCObj As IRubricator;
    //Получаем справочник, на который ссылается атрибут "COUNTRY"
    Atts := FC.GetDictionary(RubricatorDictionary.rubdicFacts, RubricatorDictionaryOperation.rubdicopNone).Attributes;
    LinkedDict := Atts.FindById("COUNTRY").ValuesObject;
    //Получаем группу правил валидации    
    ValidObj := Mb.ItemByIdNamespace["VALIDATION_GROUP", FCObj.Key].Edit();
    ValidFilterGroup := ValidObj As IValidationGroup;
    // Задаем пороговое значение для исключений группы правил
    ValidFilterGroup.ExceptionsLimit := 500000;
    // Получаем параметры группы правил валидации
    Params := ValidFilterGroup.Params;
    Params.Clear();
    // Создаем параметр для группы правил валидации   
    FilterParam := Params.Add();
    FilterParam.Id := "FILTER_COUNTRY";
    FilterParam.Name := "Страны для блока фильтрации";
    FilterParam.LinkedObject := LinkedDict;
    // Задаем управляющий параметр
    Filters := ValidFilterGroup.ValidationFilters;
    For i := 0 To Filters.Count - 1 Do
        Filters.ParamControl[i].Item[0].ControllingParam := FilterParam;
    End For;
    // Сохраняем группу правил валидации
    ValidObj.Save();
    // Задаем параметры выполнения группы правил
    ExecSett := ValidFilterGroup.CreateExecuteSettings();
    Analyzer := UiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
    ExecSett.Laner := Analyzer.Laner;
    pDimInstance := LinkedDict.Open(NullAs IDimInstance;
    // Создаём отметку для фильтрации элементов
    DimSelect := pDimInstance.CreateSelection();
    DimSelect.DeselectAll();
    DimSelect.SelectElement(0False);
    DimSelect.SelectElement(1False);
    DimSelect.SelectElement(2False);
    // Задаем значения параметра
    ParamVals := ExecSett.ParamValues;
    ParamVals.FindById("FILTER_COUNTRY").Value := DimSelect.ToVariant();
    ExecRun := ValidFilterGroup.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create();
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterGroupParam;

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

См. также:

IValidationGroup