IValidationSelectionValueList.ScenarioKey

Синтаксис Fore

ScenarioKey: Integer;

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

ScenarioKey: uinteger;

Описание

Свойство ScenarioKey определяет ключ сценария, по которому должна быть рассчитана валидация.

Комментарии

По умолчанию ScenarioKey принимает значение «-1», то есть валидация рассчитывается по фактическим данным (сценарий «Факт»).

Возможность расчета на сценарных данных доступна для валидаций, оперирующих с данными, а не метаданными.

Поддерживаемые типы валидаций

Пример Fore

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

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

Sub UserProc;
Var
    Mb: IMetabase;
    RubrKey: Integer;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Level: IValidationLevel;
    ComparisonValue: IValidationComparisonValue;
    ValidExecSett: IValidationExecuteSettings;
    ValidExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
    SelValList: IValidationSelectionValueList;
    Rub: IRubricator;
    ms: IMsModelSpace;
    ScenElement: IMsScenarioTreeElement;
    Analyzer: IEaxAnalyzer;
Begin
    Mb := MetabaseClass.Active;
    // Получаем базу данных временных рядов
    RubrKey := Mb.GetObjectKeyById("TSDB_VALIDATION_PARAMETERS");
    Rub := Mb.ItemById("TSDB_VALIDATION_PARAMETERS").Bind As IRubricator;
    // Получаем правило валидации
    ValidObj := Mb.ItemByIdNamespace("VALIDATION_NUMBER", RubrKey).Edit;
    // Настраиваем условия правила
    ValidFilter := ValidObj As IValidationFilter;
    Level := ValidFilter.Details As IValidationLevel;
    ComparisonValue := Level.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.More;
    ComparisonValue.Percentage := False;
    ComparisonValue.Value1 := -0.3;
    // Задаем сценарий, по которому будет рассчитываться валидация
    SelValList := Level.SelectionTargetData;
    ms := Rub.ModelSpace.Bind As IMsModelSpace;
    ScenElement := ms.ScenarioTree.Item(0As IMsScenarioTreeElement;
    SelValList.ScenarioKey := ScenElement.Scenario.InternalKey;
    // Сохраняем изменения
    ValidObj.Save;
    // Выполняем валидацию
    ValidExecSett := New ValidationExecuteSettings.Create;
    Analyzer := UiErAnalyzer1.ErAnalyzer;
    ValidExecSett.Laner := Analyzer.Laner;
    ValidExecRun := ValidFilter.Execute(ValidExecSett);
    DiagRep := New DiagnosticReport.Create;
    DiagRep.Run := ValidExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub UserProc;

В результате выполнения примера будет настроено правило валидации «Сравнение с числом»: выявляются значения рядов больше «-0,3» по указанному сценарию.

Пример Fore.NET

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

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

Sub UserProc();
Var
    Mb: IMetabase;
    RubrKey: uinteger;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Level: IValidationLevel;
    ComparisonValue: IValidationComparisonValue;
    ValidExecSett: ValidationExecuteSettings;
    ValidExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
    SelValList: IValidationSelectionValueList;
    Rub: IRubricator;
    ms: IMsModelSpace;
    ScenElement: IMsScenarioTreeElement;
    Analyzer: EaxAnalyzer;
Begin
    Mb := self.Metabase;
    // Получаем базу данных временных рядов
    RubrKey := Mb.GetObjectKeyById("TSDB_VALIDATION_PARAMETERS");
    Rub := Mb.ItemById["TSDB_VALIDATION_PARAMETERS"].Bind() As IRubricator;
    // Получаем правило валидации
    ValidObj := Mb.ItemByIdNamespace["VALIDATION_NUMBER", RubrKey].Edit();
    // Настраиваем условия правила
    ValidFilter := ValidObj As IValidationFilter;
    Level := ValidFilter.Details As IValidationLevel;
    ComparisonValue := Level.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.vcoMore;
    ComparisonValue.Percentage := False;
    ComparisonValue.Value1 := -0.3;
    // Задаем сценарий, по которому будет рассчитываться валидация
    SelValList := Level.SelectionTargetData;
    ms := Rub.ModelSpace.Bind() As IMsModelSpace;
    ScenElement := ms.ScenarioTree.Item[0As IMsScenarioTreeElement;
    SelValList.ScenarioKey := ScenElement.Scenario.InternalKey;
    // Сохраняем изменения
    ValidObj.Save();
    // Выполняем валидацию
    ValidExecSett := New ValidationExecuteSettings.Create();
    Analyzer := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
    ValidExecSett.Laner := Analyzer.Laner;
    ValidExecRun := ValidFilter.Execute(ValidExecSett);
    DiagRep := New DiagnosticReport.Create();
    DiagRep.Run := ValidExecRun;
    DiagRep.EaxAnalyzer := Analyzer;
End Sub UserProc;

См. также:

IValidationSelectionValueList