IMDCalculationInstance.CreateParser

Синтаксис

CreateParser: IMDCalculationExpressionParser;

Описание

Метод CreateParser создает объект, осуществляющий разбор выражения формулы, заданной в виде символьной строки.

Пример

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

Sub Main;

Var

MB: IMetabase;

MDInst: IMDCalculationInstance;

Source: IMDCalculationSourceInstance;

Parser: IMDCalculationExpressionParser;

SourceCoord, DestCoord: IMatrixCoord;

SourceKey, DestKey: IMDCalculationFormulaElementKey;

Dest: IMDCalculationDestinationInstance;

Formulas: IMDCalculationFormulas;

Formula: IMDCalculationFormula;

i: Integer;

Begin

MB := MetabaseClass.Active;

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

Source := MDInst.Sources.Item(0);

Parser := MDInst.CreateParser;

SourceCoord := Source.NewCoord;

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

SourceCoord.Item(i) := 0;

End For;

SourceKey := Source.CoordToKey(SourceCoord);

Parser.TermKey("Term") := SourceKey;

Parser.Text := "Shift(Term, Year, 1)*3.14";

Parser.Parse;

Dest := MDInst.Destination;

DestCoord := Dest.NewCoord;

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

DestCoord.Item(i) := 0;

End For;

DestKey := Dest.CoordToKey(DestCoord);

Formulas := MDInst.CreateFormulas;

Formula := Formulas.Add;

Parser.Expression.CopyTo(Formula.Expression);

MDInst.WriteFormulas(DestKey, Formulas);

End Sub Main;

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

См. также:

IMDCalculationInstance