查询报表

查询报表是可以通过单条 SQL 查询生成的报表。
只要查询能生成列和记录,查询可以简单也可以复杂。
这些报表只能由系统管理员创建,并存储在数据库中。

要创建查询报表,请在快捷搜索栏中输入“新建报表”并按回车。

  1. 将报表类型设置为“查询报表”
  2. 设置参考文档类型 – 有权访问该参考文档类型的用户将有权访问该报表
  3. 设置模块 – 报表将显示在该模块的“自定义报表”部分。
  4. 编写你的查询

如果你将“标准”设置为“是”并且启用了开发者模式,那么将生成一个 JSON 文件,
你需要将其签入到你的版本控制中。只有当你想要将查询报表与你的应用一起打包时,
才应该这样做。模块将决定 JSON 文件存放的位置。

列和筛选器

在版本 13 中添加

你可以在报表文档中配置列和筛选器。在这里,你可以为列和筛选器设置标签、宽度、格式(字段类型)。

筛选器可以在查询中用作格式化变量。例如,类型为 customer 的筛选器可以在查询中用作 %(customer)s。

示例

SELECT
 name, creation, production_item, qty, produced_qty, company
FROM
 `tabWork Order`
WHERE
 docstatus=1
 AND ifnull(produced_qty,0) < qty

格式化列(旧式)

或者,也可以通过以特定格式指定列的标签来格式化列:{label}:{optional fieldtype}{optional /}{optional options}:{optional width}

如果你已经在报表本身中配置了字段和列,则无需使用这种样式。

示例(旧式)

下面是一个查询可能的样子:

SELECT
 `tabWork Order`.name as "Work Order:Link/Work Order:200",
 `tabWork Order`.creation as "Date:Date:120",
 `tabWork Order`.production_item as "Item:Link/Item:150",
 `tabWork Order`.qty as "To Produce:Int:100",
 `tabWork Order`.produced_qty as "Produced:Int:100",
 `tabWork Order`.company as "Company:Link/Company:"
FROM
 `tabWork Order`
WHERE
 `tabWork Order`.docstatus=1
 AND ifnull(`tabWork Order`.produced_qty,0) < `tabWork Order`.qty
 AND NOT EXISTS (SELECT name from `tabStock Entry` where work_order =`tabWork Order`.name)

如果你注意到每一列都有一种特殊语法,我们会使用这些信息来格式化报表视图。

例如:第一列 Work Order:Link/Work Order:200 将渲染为文档类型为“工单”的链接字段,列宽将为 200px。


查询报表视图