用途:为 Frappe 框架开发报表,涵盖 Report Builder(报表生成器)、Query Report(查询报表)、Script Report(脚本报表),并支持图表数据集成。
主要能力与用法:
- 报表类型选择:单 DocType 简单列表或分组用 Report Builder(纯 UI,无代码);纯 SQL 用 Query Report(列格式写在 SQL 别名中,如 "Label:Fieldtype/Options:Width");复杂逻辑、计算与图表用 Script Report(标准版需 Python + JS 文件与开发者模式;自定义版在 UI 内写 Python)。
- Script Report 的 execute(filters=None) 可返回 columns、data、message、chart、report_summary、skip_total_row。列必须用字典列表定义 fieldname、label、fieldtype、width,可翻译标签用 _()。
- 筛选器在 JS 中通过 frappe.query_reports["报表名"].filters 定义,支持 Link、Select、Date、DateRange、Check、Dynamic Link、Data、Int、MultiSelectList 等类型。
- 图表数据格式包含 labels 与 datasets,type 可为 bar、line、pie、donut、percentage;report_summary 支持 value、label、datatype、currency、indicator。
- 大数据报表可启用 Prepared Report(设置 prepared_report = 1),通过 enqueue() 异步后台运行。
- Number Card 来源可为 Document Type、Report 或 Custom Method(@frappe.whitelist() 方法);Dashboard Chart 来源可为 Report、Custom(hooks.py 中 dashboard_chart_source)或 Group By。
关键规则:execute() 中 columns 与 data 不要返回 None,应返回空列表;禁止把用户筛选值直接拼进 frappe.db.sql 的 f-string,须以参数传入;应设置 Report 的 Reference DocType 控制权限;列定义不要省略 width;图表 datasets[].values 长度需与 labels 一致。
限制:资料未提供具体收费、价格、平台支持范围或性能指标;示例引用 references/ 下的文档文件,但未提供其内容。