LevelTo: IDimLevelInstance;
LevelTo: Prognoz.Platform.Interop.Dimensions.IDimLevelInstance;
Свойство LevelTo определяет уровень, на который осуществляется сдвиг.
Для определения уровня, по которому осуществляется сдвиг, используйте свойство IPrxCalculatedPointDimensionShift.Level.
Для выполнения примера предполагается наличие в репозитории регламентного отчёта с идентификатором «DOCUMENT», содержащего текстовый лист. Источник данных регламентного отчёта содержит измерение с идентификатором «D_SEP».
Добавьте ссылки на системные сборки: Dimensions, Metabase, Report.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Report: IPrxReport;
DataSource: IPrxDataSource;
SliceDims: IPrxSliceDimensions;
Points: IPrxCalculatedPoints;
Point, ParentPoint: IPrxCalculatedPoint;
PointShift: IPrxCalculatedShiftedPoint;
PointDimShift: IPrxCalculatedPointDimensionShift;
Dim: IDimInstance;
DimLevels: IDimLevelsInstance;
DimLevel: IDimLevelInstance;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("DOCUMENT").Edit;
Report := MObj As IPrxReport;
DataSource := Report.DataSources.Item(0);
SliceDims := DataSource.Slices.Item(0).Dimensions;
Dim := SliceDims.FindById("D_SEP").Dimension;
Points := DataSource.Points;
Points.Clear;
// Вычисляемая точка:
Point := Points.Add;
Point.Name := "Point_1";
Point.CalculateValue;
// Сдвиг в вычисляемой точке:
PointShift := Point As IPrxCalculatedShiftedPoint;
ParentPoint := PointShift.ParentPoint;
DimLevels:=Dim.Levels;
DimLevel:=DimLevels.Item(DimLevels.Count-1);
PointDimShift := PointShift.Shift(Dim);
PointDimShift.LevelTo := DimLevel;
Debug.WriteLine("Измерение, на которое осуществляется сдвиг: "
+ PointDimShift.Dimension.Name);
Points.CalculateValues;
(Report As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера:
будет добавлена вычисляемая точка со сдвигом по выбранному уровню измерения;
в окно консоли будет выведено наименование измерения, по которому осуществляется сдвиг.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Dimensions;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
Report: IPrxReport;
DataSource: IPrxDataSource;
SliceDims: IPrxSliceDimensions;
Points: IPrxCalculatedPoints;
Point, ParentPoint: IPrxCalculatedPoint;
PointShift: IPrxCalculatedShiftedPoint;
PointDimShift: IPrxCalculatedPointDimensionShift;
Dim: IDimInstance;
DimLevels: IDimLevelsInstance;
DimLevel: IDimLevelInstance;
Begin
MB := Params.Metabase;
MObj := MB.ItemById["DOCUMENT"].Edit();
Report := MObj As IPrxReport;
DataSource := Report.DataSources.Item[0];
SliceDims := DataSource.Slices.Item[0].Dimensions;
Dim := SliceDims.FindById("D_SEP").Dimension;
Points := DataSource.Points;
Points.Clear();
// Вычисляемая точка:
Point := Points.Add();
Point.Name := "Point_1";
Point.CalculateValue(True);
// Сдвиг в вычисляемой точке:
PointShift := Point As IPrxCalculatedShiftedPoint;
ParentPoint := PointShift.ParentPoint;
DimLevels:=Dim.Levels;
DimLevel:=DimLevels.Item[DimLevels.Count-1];
PointDimShift := PointShift.Shift[Dim];
PointDimShift.LevelTo := DimLevel;
System.Diagnostics.Debug.WriteLine("Измерение, на которое осуществляется сдвиг: "
+ PointDimShift.Dimension.Name);
Points.CalculateValues();
(Report As IMetabaseObject).Save();
End Sub;
См. также: