IMDCalculationFormula.ChangePeriod

Синтаксис

ChangePeriod(DateBegine: DateTime; DateEnd: DateTime);

Параметры

DateBegine - дата начала периода действия формулы.

DateEnd - дата окончания периода действия формулы.

Описание

Метод ChangePeriod осуществляет изменение даты начала и окончания периода действия формулы, а также корректировку с периодами действия других формул.

Комментарии

Периоды, полностью попадающие внутрь указанного, будут удалены. Периоды, частично попадающие внутрь указанного, будут скорректированы.

Пример

Для выполнения примера предполагается наличие в репозитории многомерного расчета на сервере БД с идентификатором "MDCalc_1". Для формул включена зависимость от времени.

Sub Main;

Var

MB: IMetabase;

MDInst: IMDCalculationInstance;

Source: IMDCalculationSourceInstance;

Dest: IMDCalculationDestinationInstance;

Slices: IMDCalculationSlicesInstance;

Formulas: IMDCalculationFormulas;

Formula: IMDCalculationFormula;

FormulaExpression: IMDCalculationFormulaExpression;

DestCoo, SourceCoo: IMatrixCoord;

SourceElKey, ElementKey: IMDCalculationFormulaElementKey;

Operand: IMDCalculationFormulaOperand;

CoordOperand: IMDCalculationFormulaElement;

BinaryOperand: IMDCalculationFormulaBinaryOperation;

ConstOperand: IMDCalculationFormulaConstantValue;

i: Integer;

Begin

MB := MetabaseClass.Active;

MDInst := MB.ItemById("MDCalc_1").Open(Null) As IMDCalculationInstance;

Dest := MDInst.Destination;

DestCoo := Dest.NewCoord;

Slices := Dest.Slices;

For i := 0 To Slices.Count - 1 Do

DestCoo.Item(i) := 0;

End For;

ElementKey := Dest.CoordToKey(DestCoo);

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(2005, 01, 01), DateTime.ComposeDay(2006, 01, 01));

//Задать в качестве операнда - элемент из источника

Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.Element);

SourceCoo := Source.NewCoord;

For i := 0 To Slices.Count - 1 Do

SourceCoo.Item(i) := 0;

End For;

SourceElKey := Source.CoordToKey(SourceCoo);

SourceElKey.FactIndex := 0;

CoordOperand := Operand As IMDCalculationFormulaElement;

CoordOperand.Key := SourceElKey;

FormulaExpression.InsertItem(Operand);

//Задать в качестве операнда - знак "*"

Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.BinaryOperation);

BinaryOperand := Operand As IMDCalculationFormulaBinaryOperation;

BinaryOperand.BinaryOperation := MDCalculationFormulaBinaryOperation.Mul;

FormulaExpression.InsertItem(Operand);

//Задать в качестве операнда - константу "3.14"

Operand := FormulaExpression.CreateItem(MDCalculationFormulaOperandKind.ConstantValue);

ConstOperand := Operand As IMDCalculationFormulaConstantValue;

ConstOperand.ConstantValue := 3.14;

FormulaExpression.InsertItem(Operand);

MDInst.WriteFormulas(ElementKey, Formulas);

End Sub Main;

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

См. также:

IMDCalculationFormula

IMDCalculationFormulas.CheckPeriods