Пример создания гиперссылки

Для выполнения примера предполагается наличие области данных или табличного визуализатора с идентификатором «EaxObject», размещенного на активном листе регламентного отчета.

Этап 1. Создание процедуры

Для создания макроса в окне «Навигатор объектов» выполните команду контекстного меню «Создать > Среда разработки > Модуль». Будет открыто окно среды разработки.

Добавьте ссылки на системные сборки: Dimensions, Express, Matrix, Pivot, Report, Tab, Ui. Для этого выполните команду «Сборка > Редактировать ссылки». В открывшемся окне «Ссылки сборки» на вкладке «Системные сборки» установите флажки напротив наименований необходимых сборок.

В окне среды разработки введите следующий код:

Sub AttributeValue(Row: Integer; Column: Integer);
Var
    rep: IPrxReport;
    tab: ITabSheet;
    sheet: IPrxTable;
    DataArea: IEaxDataAreaViews;
    grid: IEaxGrid;
    result_eax: IEaxDrillResult;
    result_prx: IPrxDrillCellResult;
    slice_eax: IEaxDataAreaPivotSlice;
    slice_prx: IPrxSlice;
    dim: IDimInstance;
    DimSelection: IDimSelection;
    dim_prx: IPrxSliceDimension;
    DimAttr: IDimAttributeInstance;
    DimElements: IDimElements;
    DataBinding: IPrxTableDataBinding;
    FocusedRow, FocusedColumn, dimInd, ind: Integer;
    AttrValue: Variant;
Begin
    rep := PrxReport.ActiveReport;
    sheet := rep.ActiveSheet 
As IPrxTable;
    tab := sheet.TabSheet;
    
// индекс строки, в которой находится ячейка с фокусом:
    FocusedRow := Row;
    
// индекс столбца, в котором находится ячейка с фокусом:
    FocusedColumn := Column;
    
// === Табличный визуализатор ===
    DataArea := rep.DataArea.Views;
    grid := DataArea.FindById(
"EaxObject"As IEaxGrid;
    result_eax := grid.DrillCellResult(FocusedRow, FocusedColumn);
    
If result_eax <> Null Then
        slice_eax := grid.Slice 
As IEaxDataAreaPivotSlice;
        dim := slice_eax.Pivot.LeftHeader.Dim(
0);
        DimSelection := result_eax.Selection.FindByKey(dim.Key);
        WinApplication.InformationBox(
"Значение атрибута элемента: " + #10 + #13 + DimSelection.ToString);
    
End If;
    
// === Область данных ===
    DataBinding := (rep.ActiveSheet As IprxTable).DataBinding;
    result_prx := DataBinding.DrillCell(FocusedRow, FocusedColumn);
    
If result_prx <> Null Then
        slice_prx := rep.DataSources.Item(
0).Slices.Item(0);
        dim_prx := slice_prx.LeftHeader.Item(
0);
        dimInd := slice_prx.Selection.IndexOfKey(dim_prx.Key);
        ind := result_prx.Coord.Item(dimind);
        DimAttr := dim_prx.Dimension.Attributes.Item(
0);
        DimSelection := result_prx.Selection.Item(dimind);
        DimElements := DimSelection.Dimension.Elements;
        AttrValue := DimElements.AttributeValueO(ind, DimAttr);
        WinApplication.InformationBox(
"Значение атрибута элемента: " + #10 + #13 + AttrValue);
    
End If;
End Sub AttributeValue;

После написания и сохранения модуля подключите его к отчету.

Этап 2. Создание пользовательской js-функции

Если необходимо, чтобы ссылка работала в веб-приложении, то создайте пользовательскую js-функцию, аналогичную процедуре Fore, и подключите её к отчёту. Сигнатура функции указана в разделе «Гиперссылка». Для получения подробной информации о подключении функции к отчету обратитесь к статье «Подключение пользовательской js-функции к отчёту».

Этап 3. Создание гиперссылки

Для ячейки в регламентном отчете откройте окно «Формат ячейки». Перейдите на вкладку «Гиперссылка» и в соответствующих полях укажите наименования созданного модуля, процедуры и js-функции:

Примечание. В рассматриваемом примере в качестве параметров процедуры указываются номера строки и столбца области данных: AttributeValue(3, 3).

Результат

Ячейка, содержащая гиперссылку, выглядит следующим образом:

Нажмите на ячейку с гиперссылкой.

В результате выполнения примера будут получены атрибуты элемента области данных по введённым координатам ячейки области данных. Например:

См. также:

Гиперссылка