DrillTo(Range: ITabRange; DimKey: Integer; LevelKey: Integer): Boolean;
Range. Детализируемый диапазон ячеек таблицы;
DimKey. Ключ измерения;
LevelKey. Уровень измерения, на который осуществляется переход для работы с данными.
Метод DrillTo осуществляет детализацию данных в указанном диапазоне ячеек таблицы с переходом на указанный уровень измерения.
Для выполнения примера в репозитории предполагается наличие регламентного отчёта с идентификатором REPORT. В отчёт добавлен источник данных и построена аналитическая область данных. В заголовке столбцов используется измерение, содержащее минимум два уровня элементов, выставлена какая-либо отметка.
Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Pivot, Report, Tab.
Sub UserProc;
Var
Mb: IMetabase;
Report: IPrxReport;
Grid: IEaxGrid;
DataRange, DrillRange: ITabRange;
Dim: IDimInstance;
Begin
Mb := MetabaseClass.Active;
// Открытие отчёта
Report := Mb.ItemById("REPORT").Open(Null) As IPrxReport;
Grid := Report.DataArea.Views.Item(0) As IEaxGrid;
// Диапазон ячеек в
заголовке
DrillRange := Grid.SpecificRange(EaxRangeType.HeaderDrillDown);
Debug.WriteLine("Диапазон для детализации: " + DrillRange.Address);
// Проверка на возможность детализации
If Grid.IsRangeDrillable(DrillRange, EaxDrillType.To_) Then
DataRange := Grid.SpecificRange(EaxRangeType.Internal);
Debug.WriteLine("Диапазон данных до детализации: " + DataRange.Address);
Dim := (Grid.Slice As IEaxDataAreaPivotSlice).Pivot.TopHeader.Dim(0);
// Детализация на указанный уровень измерения
Grid.DrillTo(DrillRange, Dim.Key, Dim.Levels.Item(1).LevelKey);
DataRange := Grid.SpecificRange(EaxRangeType.Internal);
Debug.WriteLine("Диапазон данных после детализации: " + DataRange.Address);
End If;
End Sub UserProc;
При выполнении примера будет открыт отчёт. Будет получен диапазон ячеек, в котором может быть произведена детализация данных. Детализация будет выполнена на второй уровень измерения. Адреса диапазонов ячеек с данными до и после детализации будут выведены в консоль среды разработки.
См. также: