IValidationSelectionValues.ParameterAsSelection

Синтаксис Fore

ParameterAsSelection: IMsModelParam;

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

ParameterAsSelection: Prognoz.Platform.Interop.Ms.IMsModelParam;

Описание

Свойство ParameterAsSelection определяет параметр для передачи отметки в элемент фильтра.

Комментарии

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

Пример Fore

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

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

Пример является методом для добавления параметра в фильтр валидации. Параметр ограничивает набор фильтруемых рядов. Входные параметры метода:

Sub AddFilterParam(IsGroup: Boolean; Value: Variant);
Var
    mb: IMetabase;
    FCObj: IMetabaseObject;
    FC: IRubricator;
    Atts: IMetaAttributes;
    LinkedDict: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Params: IMsModelParams;
    FilterPrarm: IMsModelParam;
    Filter: IValidationSelectionFilter;
    Sel: IDimSelection;
    FilterVal: IValidationSelectionValues;
    ExecSett: IValidationExecuteSettings;
    Analyzer: IEaxAnalyzer;
    ParamVals: IMsModelParamValues;
    ExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    mb := MetabaseClass.Active;
    // Получаем базу данных временных рядов
    FCObj := mb.ItemById("TSDB_VALIDATION_PARAMETERS").Bind;
    FC := FCObj As IRubricator;
    // Получаем справочник, на который ссылается атрибут CITY
    Atts := FC.Facts.Attributes;
    LinkedDict := Atts.FindById("CITY").ValuesObject;
    // Получаем правило валидации
    ValidObj := Mb.ItemByIdNamespace("VALIDATION_TREND", FCObj.Key).Edit;
    ValidFilter := ValidObj As IValidationFilter;
    // Получаем параметры правила валидации
    Params := ValidFilter.Params;
    Params.Clear;
    // Добавляем параметр для фильтрации элементов
    FilterPrarm := Params.Add;
    FilterPrarm.Id := "FILTER_CITY";
    FilterPrarm.Name := "Город для фильтра";
    FilterPrarm.LinkedObject := LinkedDict;
    // Задаем фильтр валидации, основанный на параметре
    Filter := (ValidFilter.Details As IValidationTrend).SelectionFilter;
    Filter.Clear;
    Sel := (LinkedDict.Open(NullAs IDimInstance).CreateSelection;
    FilterVal := Filter.Add(Sel);
    If IsGroup Then
        FilterVal.ParameterAsGroup := FilterPrarm;
    Else
        FilterVal.ParameterAsSelection := FilterPrarm;
    End If;
    // Сохраняем правило валидации
    ValidObj.Save;
    // Задаем параметры выполнения правила
    ExecSett := ValidFilter.CreateExecuteSettings;
    Analyzer := UiErAnalyzer1.ErAnalyzer;
    ExecSett.Laner := Analyzer.Laner;
    // Задаем значения параметра
    ParamVals := ExecSett.ParamValues;
    ParamVals.FindById("FILTER_CITY").Value := Value;
    // Выполняем правило валидации
    ExecRun := ValidFilter.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create;
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterParam;

В результате выполнения примера для правила валидации «VALIDATION_TREND» будет задан фильтр. Отметка, образующая фильтр, будет задана параметром «COMPAR_CITY». Данный параметр определяет значение обязательного атрибута «CITY». Правило будет рассчитано для рабочей книги, отображаемой в «WorkbookDocumentViewerBox1».

Пример Fore.NET

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

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

Public Sub AddFilterParam(IsGroup: Boolean; Value: object);
Var
    mb: IMetabase;
    FCObj: IMetabaseObject;
    FC: IRubricator;
    Atts: IMetaAttributes;
    LinkedDict: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Params: IMsModelParams;
    FilterPrarm: IMsModelParam;
    Filter: IValidationSelectionFilter;
    Sel: IDimSelection;
    FilterVal: IValidationSelectionValues;
    ExecSett: ValidationExecuteSettings;
    Analyzer: EaxAnalyzer;
    ParamVals: IMsModelParamValues;
    ExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    mb := self.Metabase;
    // Получаем базу данных временных рядов
    FCObj := mb.ItemById["TSDB_VALIDATION_PARAMETERS"].Bind();
    FC := FCObj As IRubricator;
    // Получаем справочник, на который ссылается атрибут CITY
    Atts := FC.Facts.Attributes;
    LinkedDict := Atts.FindById("CITY").ValuesObject;
    // Получаем правило валидации
    ValidObj := Mb.ItemByIdNamespace["VALIDATION_TREND", FCObj.Key].Edit();
    ValidFilter := ValidObj As IValidationFilter;
    // Получаем параметры правила валидации
    Params := ValidFilter.Params;
    Params.Clear();
    // Добавляем параметр для фильтрации элементов
    FilterPrarm := Params.Add();
    FilterPrarm.Id := "FILTER_CITY";
    FilterPrarm.Name := "Город для фильтра";
    FilterPrarm.LinkedObject := LinkedDict;
    // Задаем фильтр валидации, основанный на параметре
    Filter := (ValidFilter.Details As IValidationTrend).SelectionFilter;
    Filter.Clear();
    Sel := (LinkedDict.Open(NullAs IDimInstance).CreateSelection();
    FilterVal := Filter.Add(Sel);
    If IsGroup Then
        FilterVal.ParameterAsGroup := FilterPrarm;
    Else
        FilterVal.ParameterAsSelection := FilterPrarm;
    End If;
    // Сохраняем правило валидации
    ValidObj.Save();
    // Задаем параметры выполнения правила
    ExecSett := ValidFilter.CreateExecuteSettings();
    Analyzer := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
    ExecSett.Laner := Analyzer.Laner;
    // Задаем значения параметра
    ParamVals := ExecSett.ParamValues;
    ParamVals.FindById("FILTER_CITY").Value := Value;
    // Выполняем правило валидации
    ExecRun := ValidFilter.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create();
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterParam;

См. также:

IValidationSelectionValues