IEaxDrillSettings.OpenObjectContext

Синтаксис

OpenObjectContext: IEaxOpenObjectContext;

Описание

Свойство OpenObjectContext возвращает настройки, передаваемые в открываемый объект.

Комментарии

Актуально, если открываемым объектом является регламентный отчёт.

Для использования передаваемых настроек в отчёте должен быть создан параметр с идентификатором REPORT_OPEN_CONTEXT. В данный параметр будут переданы настройки, заданные в свойстве OpenObjectContext, в формате XML. Если передаются пользовательские настройки, то они могут быть обработаны в прикладном макросе открываемого отчёта.

Пример

Для выполнения примера предполагается наличие в репозитории экспресс-отчёта с идентификатором EXPRESS_REPORT и регламентного отчёта с идентификатором REPORT.

Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Pivot, Report, Tab, Xml.

Sub UserProc;
Var
    MB: IMetabase;
    Eax: IEaxAnalyzer;
    PivSlice: IEaxDataAreaPivotSlice;
    Pivot: IPivot;
    HeadSets: IDataAreaHeaderSettingsBase;
    Grid: IEaxGrid;
    DimSettings: IEaxGridDimensionSettings;
    PivotDims: IPivotDimension;
    DimModel: IDimensionModel;
    DimIndex: IDimIndex;
    Attributes: IDimAttributesInstance;
    Attribute: IDimAttribute;
    Drill: IEaxDrillSettings;
    OpenContext: IEaxOpenObjectContext;
    XMLDoc: IXMLDOMDocument;
    XMLElem: IXMLDOMElement;
Begin
    // Получим репозиторий
    MB := MetabaseClass.Active;
    // Получим регламентный отчет
    Eax := MB.ItemById("EXPRESS_REPORT").Edit As IEaxAnalyzer;
    // Получим срез данных в качестве области данных таблицы отчета
    PivSlice := Eax.DataArea.Slices.Item(0As 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(0As 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 := Eax.Sheets.Item(0).Key;
    // Укажем измерение
    Drill.Dimension := PivotDims;
    // Установим способ изменения отметки - замена
    Drill.Mode := EaxDataDrillMode.Replace;
    // Установим индекс для поиска элементов
    Drill.DimensionIndex := DimIndex;
    // Установим атрибут поиска в индексе
    Drill.DimensionAttribute := Attribute;
    // При щелчке по гиперссылке будет открыт регламентный отчёт
    Drill.ActionType := TabHyperlinkActionType.OpenObject;
    Drill.Action := "REPORT";
    OpenContext := Drill.OpenObjectContext;
    OpenContext.ActiveSheetKey := 2;
    OpenContext.EnableUserData := True;
    XMLDoc := New FreeThreadedDOMDocument60.Create;
    XMLElem := XMLDoc.createElement("Root");
    XMLDoc.appendChild(XMLElem);
    OpenContext.ExternalXML := XMLDoc.documentElement;
    // Сохраним настройки
    OpenContext.SaveToXml(XMLElem);
    XMLDoc.save("D:\OpenObjectContext.xml");
    Eax.RefreshAll;
    (Eax As IMetabaseObject).Save;
End Sub UserProc;

При выполнении примера для измерения экспресс-отчёта будет настроена расшифровка. При щелчке по элементам будет открываться регламентный отчёт с позиционированием на второй странице. Также в отчёт будут передаваться пользовательские данные, которые могут быть обработаны в пользовательском макросе. Настройки, передаваемые в открываемый объект, будут сохранены в XML-файл.

См. также:

IEaxDrillSettings