ILaner.IdentByFact

Синтаксис Fore

IdentByFact: Boolean;

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

IdentByFact: Boolean;

Описание

Свойство IdentByFact определяет, берутся ли данные на период идентификации по сценарию «Факт».

Комментарии

Свойство актуально при работе с рядами из БД временных рядов в моделировании и прогнозировании.

Доступные значения:

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей компонент LanerBox и компонент UiErAnalayzer с идентификатором «UiErAnalayzer1», являющийся источником данных для LanerBox. В «UiErAnalayzer1» должна быть загружена рабочая книга БД временных рядов. В репозитории должен присутствовать контейнер моделирования с идентификатором «MS», содержащий задачу моделирования с идентификатором «FILLMODEL». Данная задача должна содержать внутреннюю метамодель, содержащую внутреннюю БД временных рядов и модель. Также в контейнере моделирования должен присутствовать сценарий с ключом «43276». Данный сценарий должен использоваться для расчёта задачи «FILLMODEL».

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

Sub UserProc;
Var
    mb: IMetabase;
    wb: IMetabaseObject;
    MsObj: IMetabaseObjectDescriptor;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    SimpleModel: IMsModel;
    ScArr: Array Of Integer;
    pr: IMsProblem;
    Period: IMsModelPeriod;
    i: Integer;
    ChainEn: IMsCalculationChainEntries;
    Laner: ILaner;
Begin
    // Получаем рабочую книгу
    wb := UiErAnalyzer1.Object.Edit;
    mb := MetabaseClass.Active;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById("MS");
    // Получаем задачу моделирования
    pr := mb.ItemByIdNamespace("FILLMODEL", MsObj.Key).Bind As IMsProblem;
    // Получаем метамодель
    Meta := pr.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем модель
    ChainEn := Meta.CalculationChain;
    For i := 0 To ChainEn.Count - 1 Do
        If ChainEn.Item(i).Type = MsCalculationChainEntryType.Model Then
            SimpleModel := (ChainEn.Item(i) As IMsCalculationChainModel).Model;
        End If;
    End For;
    // Создаем массив ключей сценариев
    ScArr := New Integer[2];
    ScArr[0] := -1;
    ScArr[1] := 43276;
    Period := SimpleModel.Period;
    // Заполняем рабочую книгу по данным из модели
    MetaVisual.FillWithModel(SimpleModel, ScArr, Period, Period, pr, wb);
    wb.Save;
    // Открываем рабочую книгу
    Laner := (wb As IEaxAnalyzer).Laner;
    Laner.BeginUpdate;
    UiErAnalyzer1.Object := wb;
    UiErAnalyzer1.Active := True;
    // Данные для идентификации будут браться по сценарию «Факт» 
    Laner.IdentByFact := True;
    Laner.Update;
    Laner.EndUpdate;
End Sub UserProc;

После выполнения примера будет открыта рабочая книга, заполненная по данным внутренней модели.

Результат выполнения примера: в «UiErAnalayzer1» открыта рабочая книга, заполненная данными внутренней модели по нескольким сценариям. Для расчёта данные на период идентификации будут браться по сценарию «Факт».

Пример Fore.NET

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

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

Public Sub UserProc();
Var
    mb: IMetabase;
    wb: IMetabaseObject;
    MsObj: IMetabaseObjectDescriptor;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    SimpleModel: IMsModel;
    ScArr: Array Of Integer;
    pr: IMsProblem;
    Period: IMsModelPeriod;
    i: Integer;
    ChainEn: IMsCalculationChainEntries;
    Laner: ILaner;
Begin
    // Получаем рабочую книгу
    wb := uiErAnalyzerNet1.Object.Edit();
    mb := Self.Metabase;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById["MS"];
    // Получаем задачу моделирования
    pr := mb.ItemByIdNamespace["FILLMODEL", MsObj.Key].Bind() As IMsProblem;
    // Получаем метамодель
    Meta := pr.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем модель
    ChainEn := Meta.CalculationChain;
    For i := 0 To ChainEn.Count - 1 Do
        If ChainEn.Item[i].Type = MsCalculationChainEntryType.mccetModel Then
            SimpleModel := (ChainEn.Item[i] As IMsCalculationChainModel).Model;
        End If;
    End For;
    // Создаем массив ключей сценариев
    ScArr := New Integer[2];
    ScArr[0] := -1;
    ScArr[1] := 43276;
    Period := SimpleModel.Period;
    // Заполняем рабочую книгу по данным из модели
    MetaVisual.FillWithModel(SimpleModel, ScArr, Period, Period, pr, wb);
    // Открываем рабочую книгу
    Laner := (wb As IEaxAnalyzer).Laner;
    Laner.BeginUpdate();
    uiErAnalyzerNet1.Object := wb;
    uiErAnalyzerNet1.Active := True;
    // Данные для идентификации будут браться по сценарию «Факт»
    Laner.IdentByFact := True;
    Laner.Update();
    Laner.EndUpdate();
End Sub UserProc;

См. также:

ILaner