Настройка и применение правила валидации

Для выполнения примера предполагается наличие в репозитории:

Подключите ссылки на следующие системные сборки:

Пример

Создайте форму и добавьте на нее следующие компоненты:

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
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");
    ValidObj := Mb.ItemByIdNamespace("NEWVALRULE", 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 := 100;
    // Сохраняем изменения в правиле
    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 Button1OnClick;

После выполнения примера при нажатии на кнопку в таблице красным цветом будут выделены значения больше 100:

См. также:

Примеры | Создание правила валидации