UseValidationFilterDates: ValidationFilterDataOptions;
UseValidationFilterDates: Prognoz.Platform.Interop.Ms.ValidationFilterDataOptions;
Свойство UseValidationFilterDates определяет, каким образом учитывать даты расчёта, заданные для валидации.
Для определения дат расчёта валидации используйте свойства: IValidationFilter.StartDateSettings и IValidationFilter.EndDateSettings.
По умолчанию валидация применяется только на периоде расчёта, то есть UseValidationFilterDates = ValidationFilterDataOptions.PeriodByValidation.
Для выполнения примера предполагается наличие формы, содержащей компоненты LanerBox с идентификатором «LanerBox1» и UiErAnalyzer с идентификатором «UiErAnalyzer1». «UiErAnalyzer1» является источником данных для «LanerBox1» и содержит загруженный экспресс-отчёт. В репозитории предполагается наличие БД временных рядов с идентификатором «TSDB», содержащая правило расчёта валидации типа «Сравнение с выражением» с идентификатором «VALIDATION».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
Express: IEaxAnalyzer;
DiagRpt: IDiagnosticReport;
Slice: IEaxDataAreaSlice;
mb: IMetabase;
ValFilter: IValidationFilter;
ValCustom: IValidationCustom;
Out: IMsDatePeriod;
Begin
// Получаем экспресс-отчёт
Express := UiErAnalyzer1.ErAnalyzer;
// Создаем диагностический отчёт
DiagRpt := Express.Grid.DiagnosticReport;
If DiagRpt = Null Then
DiagRpt := New DiagnosticReport.Create;
Express.Grid.DiagnosticReport := DiagRpt;
End If;
// Задаем даты расчёта экспресс-отчёта
Slice := Express.DataArea.Slices.Item(0);
Slice.ExtendedPeriodStart := DateTime.Parse("01.01.1990");
Slice.ExtendedPeriodEnd := DateTime.Parse("01.01.2007");
Slice.UseExtendedPeriod := True;
// Получаем пользовательскую валидацию
mb := MetabaseClass.Active;
ValFilter := mb.ItemByIdNamespace("VALIDATION", mb.GetObjectKeyById("TSDB")).Edit As IValidationFilter;
// Задаём параметры валидации
ValCustom := ValFilter.Details As IValidationCustom;
// Задаём параметры расчёта валидации
Out := ValCustom.Transform.OutputPeriod As IMsDatePeriod;
Out.AutoPeriod := MsAutoPeriodOptions.AllByOwner;
Out.Start := DateTime.Parse("01.01.1993");
Out.End_ := DateTime.Parse("01.01.2007");
ValCustom.UseValidationFilterDates := ValidationFilterDataOptions.PeriodByValidation;
// Сохраняем изменения в валидации
ValFilter.MetabaseObject.Save;
// Применяем валидацию к экспресс-отчёту
Slice.Validations.Add(ValFilter);
Express.Grid.Refresh;
End Sub UserProc;
Результат выполнения примера: для экспресс-отчёта, загруженного в «UiErAnalyzer1», будет применено правило валидации на периоде расчёта.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Ms;
Sub UserProc();
Var
Express: IEaxAnalyzer;
DiagRpt: DiagnosticReport;
Slice: IEaxDataAreaSlice;
mb: IMetabase;
ValFilter: IValidationFilter;
ValCustom: IValidationCustom;
Outp: IMsDatePeriod;
Begin
// Получаем экспресс-отчёт
Express := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer;
// Создаем диагностический отчёт
DiagRpt := Express.Grid.DiagnosticReport;
If DiagRpt = Null Then
DiagRpt := New DiagnosticReport.Create();
Express.Grid.DiagnosticReport := DiagRpt;
End If;
// Задаем даты расчёта экспресс-отчёта
Slice := Express.DataArea.Slices.Item[0];
Slice.ExtendedPeriodStart := DateTime.Parse("01.01.1990");
Slice.ExtendedPeriodEnd := DateTime.Parse("01.01.2007");
Slice.UseExtendedPeriod := True;
// Получаем пользовательскую валидацию
mb := Self.Metabase;
ValFilter := mb.ItemByIdNamespace["VALIDATION", mb.GetObjectKeyById("TSDB")].Edit() As IValidationFilter;
// Задаём параметры валидации
ValCustom := ValFilter.Details As IValidationCustom;
// Задаём параметры расчёта валидации
Outp := ValCustom.Transform.OutputPeriod As IMsDatePeriod;
Outp.AutoPeriod := MsAutoPeriodOptions.msapoAllByOwner As integer;
Outp.Start := DateTime.Parse("01.01.1993");
Outp.@End := DateTime.Parse("01.01.2007");
ValCustom.UseValidationFilterDates := ValidationFilterDataOptions.vfdoPeriodByValidation;
// Сохраняем изменения в валидации
ValFilter.MetabaseObject.Save();
// Применяем валидацию к экспресс-отчёту
Slice.Validations.Add(ValFilter);
Express.Grid.Refresh();
End Sub UserProc;
См. также: