Рассмотрим пример добавления на лист регламентного отчета диаграммы, источником данных которой является добавленный ранее срез данных.
Для выполнения примера предполагается наличие в репозитории регламентного отчета с идентификатором «REPORT_INTRO» и стандартного куба с идентификатором «CUBE_SEP», используемого в качестве источника данных отчета. Для источника данных регламентного отчета определен срез с идентификатором «Slice».
Для выполнения примера добавьте ссылки на системные сборки Metabase, Report, Tab, Chart, Drawing.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Report: IPrxReport;
Tab: ITabSheet;
Chart: IPrxChart;
ClassId: String;
Placement: IGxRectF;
Source: IPrxDataSource;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("REPORT_INTRO").Edit;
Report := MObj As IPrxReport;
Tab := (Report.ActiveSheet As IPrxTable).TabSheet;
ClassId:="PrxChart";
Placement:=New GxRectF.Create(50,50,200,200);
Chart := (Tab.Objects.Add(ClassId,Placement)) As IPrxChart;
Chart.SourceType := PrxChartSourceType.Slice;
Source := Report.DataSources.FindById("CUBE_SEP");
Chart.Slice := Source.Slices.FindByName("Slice");
(Chart As IChart).Type := ChartType.Circles;
MObj.Save;
End Sub UserProc;
В результате выполнения примера на лист регламентного отчета будет добавлена диаграмма, в качестве источника данных которой выбран срез указанного источника данных. Для диаграммы определено ее расположение на листе и установлен тип «Круговая диаграмма».
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
Imports Prognoz.Platform.Interop.Chart;
Imports Prognoz.Platform.Interop.Drawing;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
Report: IPrxReport;
Tab: ITabSheet;
Chart: IPrxChart;
ClassId: String;
Placement: GxRectF = New GxRectFClass();
Source: IPrxDataSource;
Begin
MB := Params.Metabase;
MObj := MB.ItemById["REPORT_INTRO"].Edit();
Report := MObj As IPrxReport;
Tab := (Report.ActiveSheet As IPrxTable).TabSheet;
ClassId:="PrxChart";
Placement.Create(50,50,200,200);
Chart := (Tab.Objects.Add(ClassId,Placement)) As IPrxChart;
Chart.SourceType := PrxChartSourceType.pcstSlice;
Source := Report.DataSources.FindById("CUBE_SEP");
Chart.Slice := Source.Slices.FindByName("Slice");
(Chart As IChart).Type := ChartType.chtCircles;
MObj.Save();
End Sub;
См. также:
Общие принципы программирования с использованием сборки Report