IMDCalculationFormula.ChangePeriod

Syntax

ChangePeriod(DateBegine: DateTime; DateEnd: DateTime);

Parameters

DateBegine. Formula actual period start date.

DateEnd. Formula actual period end date.

Description

The ChangePeriod method changes start and end dates of formula actual period and adjusts the dates according to actual periods of other formulas.

Comments

The periods, which are fully included into the specified one, are deleted. The periods, which are partially included into the specified one, are adjusted.

Example

Executing the example requires that the repository contains multidimensional calculation on database server with the MDCalc_1 identifier. Time dependency is enabled for formulas.

Sub UserProc;
Var
    MB: IMetabase;
    MDInst: IMDCalculationInstance;
    Source: IMDCalculationSourceInstance;
    Dest: IMDCalculationDestinationInstance;
    Slices: IMDCalculationSlicesInstance;
    Formulas: IMDCalculationFormulas;
    Formula: IMDCalculationFormula;
    FormulaExpression: IMDCalculationFormulaExpression;
    DestCoord, SourceCoord: IMatrixCoord;
    SourceElKey, ElementKey: IMDCalculationFormulaElementKey;
    Operand: IMDCalculationFormulaOperand;
    CoordOperand: IMDCalculationFormulaElement;
    BinaryOperand: IMDCalculationFormulaBinaryOperation;
    ConstOperand: IMDCalculationFormulaConstantValue;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    MDInst := MB.ItemById("MDCalc_1").Open(NullAs IMDCalculationInstance;
    Dest := MDInst.Destination;
    DestCoord := Dest.NewCoord;
    Slices := Dest.Slices;
    For i := 0 To Slices.Count - 1 Do
        DestCoord.Item(i) := 0;
    End For;
    ElementKey := Dest.CoordToKey(DestCoord);
    ElementKey.FactIndex := 0;
    Source := MDInst.Sources.Item(0);
    Slices := Source.Slices;
    Formulas := MDInst.ReadFormulas(ElementKey);
    Formula := Formulas.Add;
    FormulaExpression := Formula.Expression;
    Formula.ChangePeriod(DateTime.ComposeDay(20250101), DateTime.ComposeDay(20260101));
    // Set element from source as an operand
    Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.Element);
    SourceCoord := Source.NewCoord;
    For i := 0 To Slices.Count - 1 Do
        SourceCoord.Item(i) := 0;
    End For;
    SourceElKey := Source.CoordToKey(SourceCoord);
    SourceElKey.FactIndex := 0;
    CoordOperand := Operand As IMDCalculationFormulaElement;
    CoordOperand.Key := SourceElKey;
    FormulaExpression.InsertItem(Operand);
    // Set the "*" symbol as an operand
    Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.BinaryOperation);
    BinaryOperand := Operand As IMDCalculationFormulaBinaryOperation;
    BinaryOperand.BinaryOperation := MDCalculationFormulaBinaryOperation.Mul;
    FormulaExpression.InsertItem(Operand);
    // Set the "3.14" constant as an operand
    Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.ConstantValue);
    ConstOperand := Operand As IMDCalculationFormulaConstantValue;
    ConstOperand.ConstantValue := 3.14;
    FormulaExpression.InsertItem(Operand);
    MDInst.WriteFormulas(ElementKey, Formulas);
End Sub UserProc;

After executing the example a formula is added for the specified data consumer element. The actual period is set for the formula. Actual periods of other formulas are adjusted according to this one.

See also:

IMDCalculationFormula | IMDCalculationFormulas.CheckPeriods