IMsSpliceTransform.Result

Синтаксис Fore

Result: IMsFormulaTerm;

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

Result: Prognoz.Platform.Interop.Ms.IMsFormulaTerm;

Описание

Свойство Result возвращает терм, соответствующий моделируемой переменной.

Комментарии

Для получения совмещаемых рядов используйте свойство IMsSpliceTransform.Operands.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS». В данном контейнере должна присутствовать стандартная модель с идентификатором «MODEL_SPLICE», содержащая два или более фактора.

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

Sub UserProc;
Var
    mb: IMetabase;
    ModelCont: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    InputsVar: IMsFormulaTransformVariables;
    TransformVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Operands: IMsFormulaTermList;
    x1, x2: IMsSpliceFormulaTerm;
    Formula: IMsFormula;
    Splice: IMsSpliceTransform;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsModelCalculation;
    Arr: Array 
Of Double;
    i: Integer;
Begin
    
// Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    
// Получаем контейнер моделирования
    ModelCont := mb.ItemById("MS");
    
// Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_SPLICE", ModelCont.Key).Edit As IMsModel;
    
// Настраиваем параметры модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem(
0);
    
// Указываем, что модель будет совмещать ряды
    Formula.Kind := MsFormulaKind.Splice;
    Splice := Formula.Method 
As IMsSpliceTransform;
    
// Задаем метод и направление совмещения рядов
    Splice.MethodType := MsSpliceType.Butt;
    Splice.SpliceDirection := MsSpliceDirection.Both;
    
// Задаем первый совмещаемый ряд и его параметры
    InputsVar := Transform.Inputs;
    TransformVar := InputsVar.Item(
0);
    Slice := TransformVar.Slices.Item(
0);
    Operands := Splice.Operands;
    Operands.Clear;
    x1 := Operands.Add(Slice) 
As IMsSpliceFormulaTerm;
    x1.StartDate := DateTime.Parse(
"01.01.2001");
    x1.EndDate := DateTime.Parse(
"01.01.2004");
    x1.BoundByData := 
False;
    
// Задаем второй совмещаемый ряд и его параметры
    TransformVar := InputsVar.Item(1);
    Slice := TransformVar.Slices.Item(
0);
    x2 := Operands.Add(Slice) 
As IMsSpliceFormulaTerm;
    x2.StartDate := DateTime.Parse(
"01.01.2005");
    x2.EndDate := DateTime.Parse(
"01.01.2008");
    x2.BoundByData := 
False;
    
// Сохраняем модель
    (Model As IMetabaseObject).Save;
    
// Задаем настройки для расчета модели
    Coord := Transform.CreateCoord(Transform.Outputs.Item(0));
    Calc := Model.CreateCalculation;
    Calc.Period.IdentificationStartDate := DateTime.Parse(
"01.01.1990");
    Calc.Period.IdentificationEndDate := DateTime.Parse(
"31.12.2016");
    Calc.Period.ForecastStartDate := DateTime.Parse(
"01.01.2017");
    Calc.Period.ForecastEndDate := DateTime.Parse(
"31.12.2025");
    
// Получаем данные моделируемой переменной и выводим их в окно консоли
    Arr := Splice.Result.Serie(Calc As IMsMethodCalculation);
    
For i := 0 To Arr.Length - 1 Do
    Debug.WriteLine(Arr[i]);
    
End For;
End Sub UserProc;

В результате выполнения примера модель «MODEL_SPLICE» будет совмещать данные первого фактора (с 2001 по 2004 годы) и второго фактора модели (с 2005 по 2008 годы). Данные моделируемой переменной будут выведены в окно консоли.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    ModelCont: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    InputsVar: IMsFormulaTransformVariables;
    TransformVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Operands: IMsFormulaTermList;
    x1, x2: IMsSpliceFormulaTerm;
    Formula: IMsFormula;
    Splice: IMsSpliceTransform;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsModelCalculation;
    Arr: System.Array;
    i: Integer;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем контейнер моделирования
    ModelCont := mb.ItemById["MS"];
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_SPLICE", ModelCont.Key].Edit() As IMsModel;
    // Настраиваем параметры модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem[0];
    // Указываем, что модель будет совмещать ряды
    Formula.Kind := MsFormulaKind.mfkSplice;
    Splice := Formula.Method As IMsSpliceTransform;
    // Задаем метод и направление совмещения рядов
    Splice.MethodType := MsSpliceType.mstButt;
    Splice.SpliceDirection := MsSpliceDirection.msdBoth;
    // Задаем первый совмещаемый ряд и его параметры
    InputsVar := Transform.Inputs;
    TransformVar := InputsVar.Item[0];
    Slice := TransformVar.Slices.Item[0];
    Operands := Splice.Operands;
    Operands.Clear();
    x1 := Operands.Add(Slice) As IMsSpliceFormulaTerm;
    x1.StartDate := DateTime.Parse("01.01.2001");
    x1.EndDate := DateTime.Parse("01.01.2004");
    x1.BoundByData := False;
    // Задаем второй совмещаемый ряд и его параметры
    TransformVar := InputsVar.Item[1];
    Slice := TransformVar.Slices.Item[0];
    x2 := Operands.Add(Slice) As IMsSpliceFormulaTerm;
    x2.StartDate := DateTime.Parse("01.01.2005");
    x2.EndDate := DateTime.Parse("01.01.2008");
    x2.BoundByData := False;
    // Сохраняем модель
    (Model As IMetabaseObject).Save();
    // Задаем настройки для расчета модели
    Coord := Transform.CreateCoord(Transform.Outputs.Item[0]);
    Calc := Model.CreateCalculation();
    Calc.Period.IdentificationStartDate := DateTime.Parse("01.01.1990");
    Calc.Period.IdentificationEndDate := DateTime.Parse("31.12.2016");
    Calc.Period.ForecastStartDate := DateTime.Parse("01.01.2017");
    Calc.Period.ForecastEndDate := DateTime.Parse("31.12.2025");
    // Получаем данные моделируемой переменной и выводим их в окно консоли
    Arr := Splice.Result.Serie[Calc As IMsMethodCalculation];
    For i := 0 To Arr.Length - 1 Do
    System.Diagnostics.Debug.WriteLine(Arr[i]);
    End For;
End Sub;

См. также:

IMsSpliceTransform