Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «TSDB», для которой будет создано новое правило валидации.
Подключите ссылки на следующие системные сборки:
Cubes;
Metabase (только для Fore).
Пример настройки и применения созданного правила валидации приведен на странице «Настройка и применение правила валидации».
Sub UserProc;
Var
Mb: IMetabase;
Rubr: IRubricator;
ci: IMetabaseObjectCreateInfo;
ValObj: IMetabaseObjectDescriptor;
ValidObj: IMetabaseObject;
RubrDescr: IMetabaseObjectDescriptor;
ValidFilter: IValidationFilter;
DateSettings: IValidationDateSettings;
FilterSett: IValidationFilterSettings;
Level: IValidationLevel;
ComparisonValue: IValidationComparisonValue;
Begin
Mb := MetabaseClass.Active;
RubrDescr := Mb.ItemById("TSDB");
Rubr := RubrDescr.Bind As IRubricator;
// Создаем правило валидации
ci := Mb.CreateCreateInfo;
ci.ClassId := MetabaseObjectClass.KE_CLASS_VALIDATIONFILTER;
ci.Parent := RubrDescr;
ci.Permanent := True;
ci.IsTemporary := False;
ci.KeepEdit := True;
ci.Name := "Сравнение с числом";
ci.Id := "NEWVALRULE";
ValObj := Mb.CreateObject(ci);
ValidObj := ValObj As IMetabaseObject;
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;
End Sub UserProc;
После выполнения примера в корневом каталоге базы данных временных рядов будет создано правило валидации с идентификатором «NEWVALRULE».
Указанная процедура является точкой входа Main в модуле Program .NET-сборки. В данный модуль должны быть импортированы сборки Cubes, Metabase из системной сборки Prognoz.Platform.Interop.
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Rubr: IRubricator;
ci: IMetabaseObjectCreateInfo;
ValObj: IMetabaseObjectDescriptor;
ValidObj: IMetabaseObject;
ValidFilter: IValidationFilter;
DateSettings: IValidationDateSettings;
FilterSett: IValidationFilterSettings;
Level: IValidationLevel;
ComparisonValue: IValidationComparisonValue;
RubrDescr: IMetabaseObjectDescriptor;
Begin
Mb :=Params.Metabase;
RubrDescr := Mb.ItemById["WB_WDI_COPY2"];
Rubr := RubrDescr.Bind() As IRubricator;
// Создаем правило валидации
ci := Mb.CreateCreateInfo();
ci.ClassId := MetabaseObjectClass.KE_CLASS_VALIDATIONFILTER As integer;
ci.Parent := RubrDescr;
ci.Permanent := True;
ci.IsTemporary := False;
ci.KeepEdit := True;
ci.Name := "Сравнение с числом";
ci.Id := "NEWVALRULE";
ValObj := Mb.CreateObject(ci);
ValidObj := ValObj As IMetabaseObject;
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;
FilterSett.FontColor := GxColorCls.FromName("Red");
// Задаем тип правила
ValidFilter.Kind := ValidationDetailsKind.vdkLevel;
Level := ValidFilter.Details As IValidationLevel;
// Задаем условия правила
ComparisonValue := Level.ComparisonValue;
ComparisonValue.ComparisonOperator := ValidationComparisonOperator.vcoMore;
ComparisonValue.Percentage := False;
ComparisonValue.Value1 := 100;
// Сохраняем правило
ValidObj.Save();
End Sub;
Результат выполнения примера аналогичен результату примера на Fore.
См. также: