2.1. 单实体报表
假设我们想获取有关图书的详细出版信息,即 library$BookPublication
实体的实例。
首先,运行报表向导并指定报表详细信息:
接下来,指定报表类型: Report for single entity。

然后单击 Next 按钮; 将出现 Select attributes for the simple report region 窗口。指定 BookPublication
实体和应该在体现在报表中的相关实体的属性(Publication.Book.Name
、Publication.Publisher.Name
、Publication.Year
和 Publication.City.Name
)。要执行此操作,请在左列中选择它们并通过单击 或双击将它们移动到右侧。
报表中属性的顺序将对应于右侧列表中指定的顺序。要更改显示顺序,请单击 /
上下移动属性。

单击 ОК 进入第二步 - 报表区域编辑。
出现的界面包含一个命名区域列表,这些区域是用来显示相关数据。向导允许向模板添加多个纯文本区域,以显示不同的数据集。
加载到特定区域的实体属性列表可以通过单击选中的属性列表链接来修改。还可以通过单击 Add simple region 来添加新区域。
如果实体包含集合属性,则会出现 Add tabulated region 按钮。它可以添加显示表格数据的区域。
在这两种情况下,选择对话框将显示 library$BookPublication
实体的属性列表,允许添加或删除集合中的属性。

在此步骤,我们已经可以运行报表并查看报表的样式。单击 Run 按钮,选择 library$BookPublication
实例并查看结果。

配置完所有报表区域后,可以进入第三步:保存报表。此时,可以查看完整的报表模板,或将输出文件的名称和格式更改为任意一种可用的类型。

单击 Save 按钮后,将出现标准报表编辑界面。现在,可以按常规方式微调报表。编辑完成后,在报表编辑界面单击 Save and close。
该报表现已添加到报表浏览界面中的 General 报表组,可以通过单击 Run 按钮来运行该报表。

此外,我们可以在出版物浏览界面上调用报表运行功能。为此,我们将在 bookpublication-browse.xml
界面描述添加 Print details 按钮:
<groupTable id="bookPublicationsTable"
...
<buttonsPanel>
...
<button id="printDetails"
caption="msg://printDetails"/>
然后我们需要在控制器中实现 TablePrintFormAction
:
@Inject
private Button printDetails;
@Subscribe
private void onInit(InitEvent event) {
TablePrintFormAction action = new TablePrintFormAction("report", bookPublicationsTable);
bookPublicationsTable.addAction(action);
printDetails.setAction(action);
}
最后,我们应该将报表与 BookPublication
浏览界面关联起来。打开报表编辑界面,切换到 Roles and Screens 标签页,并从下拉列表中将 library$BookPublication.lookup
界面添加到下表:

现在,可以通过在网格中选中出版物并单击 Print details 按钮来运行任何出版物的报表

输出如下:
