ICalendarDimensionClass.ShiftLevel

Синтаксис Fore

ShiftLevel(Calendar: IDimInstance;
           El: Integer;
           Lag: Integer;
           Level: DimCalendarLevel): Integer;

Синтаксис Fore.NET

ShiftLevel(Calendar: Prognoz.Platform.Interop.Dimensions.IDimInstance;
           El: uinteger;
           Lag: integer;
           Level: Prognoz.Platform.Interop.Dimensions.DimCalendarLevel): uinteger;

Параметры

Calendar. Данные календарного справочника, по которым выполняется расчет;

El. Индекс элемента, относительно которого выполняется расчет;

Lag. Смещение элемента;

Level. Уровень, на котором выполняется смещение.

Описание

Метод ShiftLevel возвращает индекс элемента, полученного путем смещения относительно указанного элемента на заданном уровне.

Комментарии

Метод рассчитывает смещение в рамках одного заданного календарного уровня. Если элемент, полученный в результате смещения, отсутствует в календаре, то метод возвращает значение «-1». Если заданный календарный уровень отсутствует, то метод генерирует исключительную ситуацию.

Для сдвига вперед во временном периоде указывайте отрицательное значения параметра Lag, для сдвига назад - положительное.

Пример Fore

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

Для выполнения примера добавьте ссылки на системные сборки «Cubes», «Dimensions».

Public Function ShiftLevel(T: Variant; Lag: Integer): Integer;
Var
    Cube: ICubeInstance;
    CubeDest: ICubeInstanceDestination;
    DimInsts: ICubeInstanceDimensions;
    DimInst: IDimInstance;
    i: Integer;
    Result: Integer;
Begin
    Cube := CubeClass.CurrentCube;
    CubeDest := Cube.Destinations.DefaultDestination;
    DimInsts := CubeDest.Dimensions;
    For i := 0 To DimInsts.Count - 1 Do
        If (DimInsts.Item(i).Dimension Is ICalendarDimension) Then
            DimInst := DimInsts.Item(i);
        End If;
    End For;
    Result := CalendarDimension.ShiftLevel(DimInst, t, Lag, DimCalendarLevel.Year);
    Return Result;
End Function ShiftLevel;

Результат использования отношения в формуле вычисляемого факта: значение для всех элементов годовой динамики будет сдвинуто. Направление и размер смещения задается пользователем через входной параметр Lag.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;

Public Shared Function ShiftLevel(T: object; Lag: Integer): integer;
Var
    cClass: CubeClassClass;
    Cube: ICubeInstance;
    CubeDest: ICubeInstanceDestination;
    DimInsts: ICubeInstanceDimensions;
    DimInst: IDimInstance;
    i: integer;
    calendDim: CalendarDimension;
    el: uinteger;
    Result: integer;
Begin
    cClass := New CubeClassClass.Create();
    Cube := cClass.CurrentCube[Null];
    CubeDest := Cube.Destinations.DefaultDestination;
    DimInsts := CubeDest.Dimensions;
    For i := 0 To DimInsts.Count - 1 Do
        If (DimInsts.Item[i].Dimension Is ICalendarDimension) Then
            DimInst := DimInsts.Item[i];
        End If;
    End For;
    calendDim := New CalendarDimension.Create();
    el := uinteger.Parse(t.ToString());
    Result := calendDim.ShiftLevel(DimInst, el, Lag, DimCalendarLevel.dclYear) As integer;
    Return Result;
End Function ShiftLevel;

Результат использования отношения в формуле вычисляемого факта: значение для всех элементов годовой динамики будет сдвинуто. Направление и размер смещения задается пользователем через входной параметр Lag.

См. также:

ICalendarDimensionClass