ICalculatedCubeInstanceCoord.IsReference

Синтаксис

IsReference: Boolean;

Описание

Свойство IsReference определяет признак передачи координаты по ссылке.

Комментарии

Если свойству установлено значение True, то при вычислении в формулы будет передаваться не значение по данной координате, а ссылка на координату, описываемая интерфейсом ICalculatedCubeInstanceCoord. По умолчанию свойству установлено значение False, при этом в формулы передается фактическое значение по данной координате. Установка свойству значения True эквивалентно установке символа «@» перед координатой в редакторе формул вычислимого куба.

Пример Fore

Для выполнения примера предполагается наличие вычисляемого куба с идентификатором «Calc_Cube», в структуре куба имеется два измерения. Также предполагается наличие модуля с идентификатором «Calc_Functions», в котором реализованы функции для вычисляемого куба. Среди функций есть функция Test, сигнатура которой имеет единственный параметр с типом ICalculatedCubeInstanceCoord. Также необходимо подключить системные сборки Cubes, Matrix, Metabase.

Sub EditFormula;
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
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;
    //Формулы по этой координате
    Formulas := CubeInst.Formula(Coord);
    Formula := Formulas.Item(0);
    //Координата куба-источника
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item(0));
    SourceCoord.MatrixCoord.Item(0) := 0;
    SourceCoord.MatrixCoord.Item(1) := 0;
    //Передавать координату по ссылке
    SourceCoord.IsReference := True;
    //Задание формулы с использованием координаты куба-источника
    Formula.Expression.AsString := "Calc_Functions.Test(" + SourceCoord.AsTerm + ")";
    //Сохранение формул
    Formulas.Save;
    CubeInst.SaveFormulas;
End Sub EditFormula;

При выполнении примера по указанной координате вычисляемого куба будет задана формула: будет вызываться прикладная функция, в которую по ссылке будет передаваться координата куба.

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
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;
    //Формулы по этой координате
    Formulas := CubeInst.Formula[Coord];
    Formula := Formulas.Item[0];
    //Координата куба-источника
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item[0]);
    SourceCoord.MatrixCoord.Item[0] := 0;
    SourceCoord.MatrixCoord.Item[1] := 0;
    //Передавать координату по ссылке
    SourceCoord.IsReference := True;
    //Задание формулы с использованием координаты куба-источника
    Formula.Expression.AsString := "Calc_Functions.Test(" + SourceCoord.AsTerm + ")";
    //Сохранение формул
    Formulas.Save();
    CubeInst.SaveFormulas();
End Sub;

См. также:

ICalculatedCubeInstanceCoord