IValidationFilter.Details

Синтаксис Fore

Details: IValidationDetails;

Синтаксис Fore

Details: Prognoz.Platform.Interop.Ms.IValidationDetails;

Описание

Свойство Details возвращает специфические настройки правила валидации.

Комментарии

В зависимости от значения свойства IValidationFilter.Kind, данное свойство может быть приведено к одному из следующих интерфейсов:

Пример Fore

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

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

Sub UserProc;
Var
    Mb: IMetabase;
    RubrKey: Integer;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    DateSettings: IValidationDateSettings;
    FilterSett: IValidationFilterSettings;
    Level: IValidationLevel;
    ComparisonValue: IValidationComparisonValue;
    ValidExecSett: IValidationExecuteSettings;
    Analyzer: IEaxAnalyzer;
    ValidExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    Mb := MetabaseClass.Active;
    
// Получаем правило валидации
    RubrKey := Mb.GetObjectKeyById("TSDB_71");
    ValidObj := Mb.ItemByIdNamespace(
"OBJ_VALID_FILTER", RubrKey).Edit;
    ValidFilter := ValidObj 
As IValidationFilter;
    
// Задаем начальную и конечную даты расчёта правила
    DateSettings := ValidFilter.StartDateSettings;
    DateSettings.DateOptions := ValidationDateOptions.DependsFromData;
    DateSettings := ValidFilter.EndDateSettings;
    DateSettings.DateOptions := ValidationDateOptions.DependsFromData;
    
// Задаем уровень календаря для расчёта правила
    ValidFilter.Level := DimCalendarLevel.Year;
    
// Задаем пороговое значение для исключений правила
    ValidFilter.ExceptionsLimit := 500000;
    
// Задаем параметры расчёта правила
    FilterSett := ValidFilter.Settings;
    
// Задаем тип правила
    ValidFilter.Kind := ValidationDetailsKind.Level;
    Level := ValidFilter.Details 
As IValidationLevel;
    
// Задаем условия правила
    ComparisonValue := Level.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.More;
    ComparisonValue.Percentage := 
False;
    ComparisonValue.Value1 := 
50;
    
// Сохраняем изменения в правиле
    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;

После выполнения примера будет настроено правило валидации «Сравнение с числом»: выявляются годовые значения больше «50». Правило будет выполнено для загруженной рабочей книги, например:

Пример Fore.NET

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

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

Public Sub UserProc();
Var
    Mb: IMetabase;
    RubrKey: uinteger;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    DateSettings: IValidationDateSettings;
    FilterSett: IValidationFilterSettings;
    Level: IValidationLevel;
    ComparisonValue: IValidationComparisonValue;
    ValidExecSett: ValidationExecuteSettings;
    Analyzer: EaxAnalyzer;
    ValidExecRun: IValidationExecRun;
    DiagRep: IDiagnosticReport;
Begin
    mb := Self.Metabase;
    // Получаем правило валидации
    RubrKey := Mb.GetObjectKeyById("TSDB_71");
    ValidObj := Mb.ItemByIdNamespace["OBJ_VALID_FILTER", RubrKey].Edit();
    ValidFilter := ValidObj As IValidationFilter;
    // Задаем начальную и конечную даты расчёта правила
    DateSettings := ValidFilter.StartDateSettings;
    DateSettings.DateOptions := ValidationDateOptions.vdoDependsFromData;
    DateSettings := ValidFilter.EndDateSettings;
    DateSettings.DateOptions := ValidationDateOptions.vdoDependsFromData;
    // Задаем уровень календаря для расчёта правила
    ValidFilter.Level := DimCalendarLevel.dclYear;
    // Задаем пороговое значение для исключений правила
    ValidFilter.ExceptionsLimit := 500000;
    // Задаем параметры расчёта правила
    FilterSett := ValidFilter.Settings;
    // Задаем тип правила
    ValidFilter.Kind := ValidationDetailsKind.vdkLevel;
    Level := ValidFilter.Details As IValidationLevel;
    // Задаем условия правила
    ComparisonValue := Level.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.vcoMore;
    ComparisonValue.Percentage := False;
    ComparisonValue.Value1 := 50;
    // Сохраняем изменения в правиле
    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;

См. также:

IValidationFilter