IMsMetaAttributeValues.ParameterAsSelection

Синтаксис Fore

ParameterAsSelection: IMsModelParam;

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

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

Описание

Свойство ParameterAsSelection определяет параметр для передачи отметки элементов, используемой для расчёта валидации.

Комментарии

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

Пример Fore

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

Добавьте ссылки на системные сборки: Metabase, Ms, Cubes, 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: IMsMetaAttributeFilter;
    FilterVal: IMsMetaAttributeValues;
    ExecSett: IValidationExecuteSettings;
    Analyzer: IEaxAnalyzer;
    ParamVals: IMsModelParamValues;
    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_FILTER", FCObj.Key).Edit;
    ValidFilter := ValidObj As IValidationFilter;
    // Получаем параметры фильтра валидации
    Params := ValidFilter.Params;
    Params.Clear;
    // Добавляем параметр для фильтрации элементов
    FilterPrarm := Params.Add;
    FilterPrarm.Id := "FILTER_COUNTRY";
    FilterPrarm.Name := "Страна для фильтра";
    FilterPrarm.LinkedObject := LinkedDict;
    // Задаем фильтр валидации
    Filter := (ValidFilter.Details As IValidationTrend).Filter;
    Filter.Clear;
    FilterVal := Filter.Add(Atts.FindById("COUNTRY"));
    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_COUNTRY").Value := Value;
    // Выполняем фильтр валидации
    ExecRun := ValidFilter.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create;
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterParam;

Результат выполнения примера: для фильтра валидации «VALIDATION_FILTER» изменён набор рядов, для которых фильтр выполняется. Фильтруемые ряды задаются параметром «COMPAR_COUNTRY», определяющим значение обязательного атрибута «COUNTRY». Фильтр будет выполнен для рабочей книги, отображаемой в «LanerBox1».

Пример Fore.NET

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

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

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: IMsMetaAttributeFilter;
    FilterVal: IMsMetaAttributeValues;
    ExecSett: ValidationExecuteSettings;
    Analyzer: EaxAnalyzer;
    ParamVals: IMsModelParamValues;
    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_FILTER", FCObj.Key].Edit();
    ValidFilter := ValidObj As IValidationFilter;
    // Получаем параметры фильтра валидации
    Params := ValidFilter.Params;
    Params.Clear();
    // Добавляем параметр для фильтрации элементов
    FilterPrarm := Params.Add();
    FilterPrarm.Id := "FILTER_COUNTRY";
    FilterPrarm.Name := "Страна для фильтра";
    FilterPrarm.LinkedObject := LinkedDict;
    // Задаем фильтр валидации
    Filter := (ValidFilter.Details As IValidationTrend).Filter;
    Filter.Clear();
    FilterVal := Filter.Add(Atts.FindById("COUNTRY"));
    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_COUNTRY").Value := Value;
    // Выполняем фильтр валидации
    ExecRun := ValidFilter.Execute(ExecSett);
    DiagRep := New DiagnosticReport.Create();
    DiagRep.Run := ExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub AddFilterParam;

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

См. также:

IMsMetaAttributeValues