Mode: EaxDataDrillMode;
Mode: Prognoz.Platform.Interop.Express.EaxDataDrillMode;
Свойство Mode определяет способ изменения отметки в расшифровке элементов измерения.
По умолчанию свойство имеет значение EaxDataDrillMode.None.
Для выполнения примера в репозитории необходимо наличие регламентного отчета с идентификатором «REG_MODE». Источником данных является куб, в котором содержится календарное измерение. Отчет содержит аналитическую область данных. Отчет содержит один лист.
Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Pivot, Report, Tab.
Sub UserProc;
Var
MB: IMetabase;
Rep: IPrxReport;
PivSlice: IEaxDataAreaPivotSlice;
Pivot: IPivot;
HeadSets: IDataAreaHeaderSettingsBase;
Grid: IEaxGrid;
DimSettings: IEaxGridDimensionSettings;
PivotDims: IPivotDimension;
DimModel: IDimensionModel;
DimIndex: IDimIndex;
Attributes: IDimAttributesInstance;
Attribute: IDimAttribute;
Drill: IEaxDrillSettings;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим регламентный отчет
Rep := MB.ItemById("REG_MOVE").Edit As IPrxReport;
// Получим срез данных в качестве области данных таблицы отчета
PivSlice := Rep.DataArea.Slices.Item(0) As IEaxDataAreaPivotSlice;
// Получим таблицу данных
Pivot := PivSlice.Pivot;
// Получим календарное
измерение
PivotDims := Pivot.Dimensions.Item(1);
// Получим структуру измерения
DimModel := PivotDims.DimInstance.Dimension;
// Получим структуру указанного индекса измерения
DimIndex := DimModel.Indexes.Item(0);
// Получим коллекцию атрибутов измерения
Attributes := PivotDims.DimInstance.Attributes;
// Получим структуру указанного атрибута
Attribute := Attributes.Item(0).Attribute;
// Получим настройки заголовка аналитической области данных
HeadSets := PivotDims As IDataAreaHeaderSettingsBase;
// Включим настройки расшифровки для указанного представления
Grid := (PivSlice As IEaxDataAreaSlice).Views.Item(0) As IEaxGrid;
Grid.ViewSettings.HyperlinkAsText := False;
DimSettings := Grid.ViewSettings.GetViewSettings(HeadSets) As IEaxGridDimensionSettings;
If Not DimSettings.IsDrilled Then
DimSettings.Drilled := TriState.OnOption;
End If;
// Получим настройки расшифровки
Drill := DimSettings.Drill;
// Укажем лист
Drill.SheetKey := Rep.Sheets.Item(0).Key;
// Укажем измерение
Drill.Dimension := PivotDims;
// Установим способ изменения отметки - замена
Drill.Mode := EaxDataDrillMode.Replace;
// Установим индекс для поиска элементов
Drill.DimensionIndex := DimIndex;
// Установим атрибут поиска в индексе
Drill.DimensionAttribute := Attribute;
Drill.DimensionAttributes := "BLOCK_TYPE";
// При щелчке по гиперссылке будет осуществлен переход на указанный сайт
// Ссылка откроется в новом окне браузера
Drill.ActionType := TabHyperlinkActionType.OpenURL;
Drill.Action := "www.example.com";
Drill.Target := TabHyperlinkTarget.Top;
// Выведем в окно консоли ключ среза данных и ключ измерения
Debug.WriteLine("Ключ среза данных = " + Drill.SliceKey.ToString);
Debug.WriteLine("Ключ измерения = " + Drill.DimensionKey.ToString);
// Обновим отчет и сохраним изменения
Rep.Recalc;
(Rep As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера:
для указанного регламентного отчета будет использоваться расшифровка элементов измерения;
при нажатии по элементу измерения будет осуществляться переход по указанной гиперссылке;
в окно консоли выведутся ключи измерения и среза данных.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Pivot;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Rep: IPrxReport;
PivSlice: IEaxDataAreaPivotSlice;
Pivot: IPivot;
HeadSets: IDataAreaHeaderSettingsBase;
Grid: IEaxGrid;
DimSettings: IEaxGridDimensionSettings;
PivotDims: IPivotDimension;
DimModel: IDimensionModel;
DimIndex: IDimIndex;
Attributes: IDimAttributesInstance;
Attribute: IDimAttribute;
Drill: IEaxDrillSettings;
Begin
// Получим репозиторий
MB := Params.Metabase;
// Получим регламентный отчет
Rep := MB.ItemById["REG_MOVE"].Edit() As IPrxReport;
// Получим срез данных в качестве области данных таблицы отчета
PivSlice := Rep.DataArea.Slices.Item[0] As IEaxDataAreaPivotSlice;
// Получим таблицу данных
Pivot := PivSlice.Pivot;
// Получим календарное
измерение
PivotDims := Pivot.Dimensions.Item[1];
// Получим структуру измерения
DimModel := PivotDims.DimInstance.Dimension;
// Получим структуру указанного индекса измерения
DimIndex := DimModel.Indexes.Item[0];
// Получим коллекцию атрибутов измерения
Attributes := PivotDims.DimInstance.Attributes;
// Получим структуру указанного атрибута
Attribute := Attributes.Item[0].Attribute;
// Получим настройки заголовка аналитической области данных
HeadSets := PivotDims As IDataAreaHeaderSettingsBase;
// Включим настройки расшифровки для указанного представления
Grid := (PivSlice As IEaxDataAreaSlice).Views.Item[0] As IEaxGrid;
Grid.ViewSettings.HyperlinkAsText := False;
DimSettings := Grid.ViewSettings.GetViewSettings[HeadSets] As IEaxGridDimensionSettings;
If Not DimSettings.IsDrilled Then
DimSettings.Drilled := TriState.tsOnOption;
End If;
// Получим настройки расшифровки
Drill := DimSettings.Drill;
// Укажем лист
Drill.SheetKey := Rep.Sheets.Item[0].Key;
// Укажем измерение
Drill.Dimension := PivotDims;
// Установим способ изменения отметки - замена
Drill.Mode := EaxDataDrillMode.eddmReplace;
// Установим индекс для поиска элементов
Drill.DimensionIndex := DimIndex;
// Установим атрибут поиска в индексе
Drill.DimensionAttribute := Attribute;
Drill.DimensionAttributes := "BLOCK_TYPE";
// При щелчке по гиперссылке будет осуществлен переход на указанный сайт
// Ссылка откроется в новом окне браузера
Drill.ActionType := TabHyperlinkActionType.thatOpenURL;
Drill.Action := "www.example.com";
Drill.Target := TabHyperlinkTarget.thtTop;
// Выведем в окно консоли ключ среза данных и ключ измерения
System.Diagnostics.Debug.WriteLine("Ключ среза данных = " + Drill.SliceKey.ToString());
System.Diagnostics.Debug.WriteLine("Ключ измерения = " + Drill.DimensionKey.ToString());
// Обновим отчет и сохраним изменения
Rep.Recalc();
(Rep As IMetabaseObject).Save();
End Sub;
См. также: