ICalculatedCubeFormulas.Add

Синтаксис

Add(DateBegin: DateTime; DateEnd: DateTime): ICalculatedCubeFormula;

Параметры

DateBegin. Дата начала действия формулы.

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

Описание

Метод Add осуществляет добавление новой формулы.

Комментарии

Метод используется, если для вычисляемого куба установлено измерение, управляющее выбором периода действия формулы. Если управление периодом действия формул в кубе не настроено, то для получения формул используйте свойство ICalculatedCubeFormulas.Item.

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    d: DateTime;
Begin
    MB := MetabaseClass.Active;
    CubeInst := MB.ItemById("Calc_Cube").Open(NullAs ICalculatedCubeInstance;
    //Получение координаты в вычисляемом кубе
    Coord := CubeInst.CreateCoord;
    Coord.MatrixCoord.Item(0) := 0;
    Coord.MatrixCoord.Item(1) := 0;
    //Получение координаты из источника
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item(0));
    SourceCoord.MatrixCoord.Item(0) := 0;
    SourceCoord.MatrixCoord.Item(1) := 0;
    Formulas := CubeInst.Formula(Coord);
    Formula := Formulas.Item(Formulas.Count - 1);
    d := Formula.DateEnd;
    Formula := Formulas.Add(d.AddDays(d, 1), d.AddMonths(d, 6));
    Formula.Expression.AsString := SourceCoord.AsTerm + "*10";
    Formulas.Save;
    CubeInst.SaveFormulas;
End Sub UserProc;

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

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    d: DateTime;
Begin
    MB := Params.Metabase;
    CubeInst := MB.ItemById["Calc_Cube"].Open(NullAs ICalculatedCubeInstance;
    //Получение координаты в вычисляемом кубе
    Coord := CubeInst.CreateCoord();
    Coord.MatrixCoord.Item[0] := 0;
    Coord.MatrixCoord.Item[1] := 0;
    //Получение координаты из источника
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item[0]);
    SourceCoord.MatrixCoord.Item[0] := 0;
    SourceCoord.MatrixCoord.Item[1] := 0;
    Formulas := CubeInst.Formula[Coord];
    Formula := Formulas.Item[Formulas.Count - 1];
    d := Formula.DateEnd;
    Formula := Formulas.Add(d.AddDays(1), d.AddMonths(6));
    Formula.Expression.AsString := SourceCoord.AsTerm + "*10";
    Formulas.Save();
    CubeInst.SaveFormulas();
End Sub;

См. также:

ICalculatedCubeFormulas