IMsFormulaTermInfo.SetDate

Синтаксис Fore

SetDate(Value: DateTime; DateFormat: String);

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

SetDate(Value: System.DateTime; DateFormat: string);

Параметры

Value. Дата, которую необходимо зафиксировать для данного терма;

DateFormat. Формат даты, в соответствии с которым производится фиксация.

Описание

Метод SetDate осуществляет фиксацию даты для терма.

Комментарии

При вызове метода свойству IMsFormulaTermInfo.Type автоматически будет установлено значение MsFormulaTermType.Date, и при вычислении модели в качестве значения терма будет подставляться значение точки, соответствующей указанной дате.

Примеры форматов, которые может принимать параметр DateFormat:

Пример Fore

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

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

Sub UserProc;
Var
    MB: IMetabase;
    Kont: IMetabaseObjectDescriptor;
    CrInf: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Model: IMsModel;
    Trans: IMsFormulaTransform;
    VarTrans: IMsFormulaTransformVariable;
    Tree: IMsFormulaTransformSlicesTree;
    Slice: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    NonLinear: IMsNonLinearRegressionTransform;
    Varr: IVariableStub;
    TransVar: IMsFormulaTransformVariable;
    TermX1, TermX2: IMsFormulaTerm;
    TermX1Info, TermX2Info: IMsFormulaTermInfo;
Begin
    MB := MetabaseClass.Active;
    Kont := Mb.ItemById(
"MODEL_SPACE");
    
//создание модели
    CrInf := Mb.CreateCreateInfo;
    CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;
    CrInf.Id := MB.GenerateId(
"New_NonLinReg", Kont.Key);
    CrInf.Name := 
"New_NonLinReg";
    CrInf.Parent := Kont;
    MObj := Mb.CreateObject(CrInf).Edit;
    Model := MObj 
As IMsModel;
    Trans := Model.Transform;
    
//добавление моделируемой переменной
    Varr := MB.ItemByIdNamespace("VAR", Kont.Key).Bind As IVariableStub;
    Trans.Outputs.Add(Varr);
    VarTrans := Trans.Outputs.Item(
0);
    Tree := VarTrans.SlicesTree(VarTrans);
    Slice := Tree.CreateSlice(
1);
    Selector := Trans.CreateSelector;
    Selector.Slice := Slice;
    Formula := Trans.Transform(Selector);
    Formula.Kind := MsFormulaKind.NonLinearRegression;
    Formula.Level := DimCalendarLevel.Year;
    NonLinear := Formula.Method 
As IMsNonLinearRegressionTransform;
    
//добавление фактора
    Varr := MB.ItemByIdNamespace("VAR_F", Kont.Key).Bind As IVariableStub;
    Trans.Inputs.Add(Varr);
    TransVar := Trans.Inputs.Item(
0);
    Slice := TransVar.SlicesTree(VarTrans).CreateSlice(
1);
    
//сопоставление терма срезу в переменной
    TermX1 := NonLinear.Operands.Add(Slice);
    TermX2 := NonLinear.Operands.Add(Slice);
    TermX1Info := TermX1.TermInfo;
    TermX2Info := TermX2.TermInfo;
    TermX2Info.Type := MsFormulaTermType.Date;
    TermX2Info.SetDate(DateTime.ComposeDay(
200011), "YYYY");
    
//создание уравнения
    NonLinear.Expression.AsString := "A0+" + TermX1Info.TermInnerText + "/" + TermX2Info.TermInnerText;
    MObj.Save;
End Sub UserProc;

После выполнения примера в контейнере моделирования будет создана новая модель. Для расчета модели будет использоваться метод нелинейной регрессии. В модель будет добавлена моделируемая переменная и одна входная переменная. Для составления уравнения будут созданы термы, ссылающиеся на срез входной переменной. При вычислении модели в качестве значения второго терма будет подставляться значение координаты, соответствующей 2000 году.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Kont: IMetabaseObjectDescriptor;
    CrInf: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Model: IMsModel;
    Trans: IMsFormulaTransform;
    VarTrans: IMsFormulaTransformVariable;
    Tree: IMsFormulaTransformSlicesTree;
    Slice: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    NonLinear: IMsNonLinearRegressionTransform;
    Varr: IVariableStub;
    TransVar: IMsFormulaTransformVariable;
    TermX1, TermX2: IMsFormulaTerm;
    TermX1Info, TermX2Info: IMsFormulaTermInfo;
Begin
    MB := Params.Metabase;
    Kont := Mb.ItemById["MODEL_SPACE"];
    //создание модели
    CrInf := Mb.CreateCreateInfo();
    CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL As integer;
    CrInf.Id := MB.GenerateId("New_NonLinReg", Kont.Key);
    CrInf.Name := "New_NonLinReg";
    CrInf.Parent := Kont;
    MObj := Mb.CreateObject(CrInf).Edit();
    Model := MObj As IMsModel;
    Trans := Model.Transform;
    //добавление моделируемой переменной
    Varr := MB.ItemByIdNamespace["VAR", Kont.Key].Bind() As IVariableStub;
    Trans.Outputs.Add(Varr);
    VarTrans := Trans.Outputs.Item[0];
    Tree := VarTrans.SlicesTree[VarTrans];
    Slice := Tree.CreateSlice(1);
    Selector := Trans.CreateSelector();
    Selector.Slice := Slice;
    Formula := Trans.Transform[Selector];
    Formula.Kind := MsFormulaKind.mfkNonLinearRegression;
    Formula.Level := DimCalendarLevel.dclYear;
    NonLinear := Formula.Method As IMsNonLinearRegressionTransform;
    //добавление фактора
    Varr := MB.ItemByIdNamespace["VAR_F", Kont.Key].Bind() As IVariableStub;
    Trans.Inputs.Add(Varr);
    TransVar := Trans.Inputs.Item[0];
    Slice := TransVar.SlicesTree[VarTrans].CreateSlice(1);
    //сопоставление терма срезу в переменной
    TermX1 := NonLinear.Operands.Add(Slice);
    TermX2 := NonLinear.Operands.Add(Slice);
    TermX1Info := TermX1.TermInfo;
    TermX2Info := TermX2.TermInfo;
    TermX2Info.Type := MsFormulaTermType.mfttDate;
    TermX2Info.SetDate(DateTime.Parse("01.01.2000"), "YYYY");
    //создание уравнения
    NonLinear.Expression.AsString := "A0+" + TermX1Info.TermInnerText + "/" + TermX2Info.TermInnerText;
    MObj.Save();
End Sub;

См. также:

IMsFormulaTermInfo | IMsFormulaTermInfo.Date