IValidationCustom.UseValidationFilterDates

Синтаксис Fore

UseValidationFilterDates: ValidationFilterDataOptions;

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

UseValidationFilterDates: Prognoz.Platform.Interop.Ms.ValidationFilterDataOptions;

Описание

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

Комментарии

Для определения дат расчёта валидации используйте свойства: IValidationFilter.StartDateSettings и IValidationFilter.EndDateSettings.

По умолчанию валидация применяется только на периоде расчёта, то есть UseValidationFilterDates = ValidationFilterDataOptions.PeriodByValidation.

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей компоненты 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.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;

См. также:

IValidationCustom