SuperAPI AI 工具集

frappe-impl-clientscripts

通用与其它

查看项目

更新于 10-15 22:17

技能介绍

用途:在 Frappe/ERPNext 中实现客户端表单功能时使用,涵盖字段显隐、级联筛选、计算字段、自定义按钮、服务端调用与表单事件选择。适用于 v14/v15/v16;v13 中 Custom Script 已更名为 Client Script。

主要能力与用法:

  1. 创建 Client Script:进入 Setup > Client Script,选择目标 DocType,勾选 Enabled,用 frappe.ui.form.on 编写并保存,脚本立即生效;调试用浏览器 F12 Console。脚本超过 50 行、需版本控制或跨环境部署时迁移到自定义应用,放入 myapp/myapp/public/js/ 并在 hooks.py 的 doctype_js 中注册,执行 bench build,再删除原 Client Script。
  2. 事件选择:set_query 放在 setup;按钮和字段显隐状态放在 refresh;校验用 validate(frappe.throw 阻止保存);保存后用 after_save;字段变化用同名字段事件;子表行增删用 {tablename}_add/_remove。字段显隐需同时实现 refresh 与字段事件。
  3. 级联筛选:在 setup 中用 frm.set_query 设置过滤,父字段变化时清空子字段。
  4. 计算字段:数值运算用 flt(),子表行变化与 items_remove 后重算合计,set_value 后无需再调 refresh_field。
  5. 服务端调用:单值查询用 frappe.db.get_value;调用文档控制器方法用 frm.call(需 @frappe.whitelist);调用独立函数用 frappe.call 或 frappe.xcall(返回 Promise)。
  6. 自定义按钮:在 refresh 中通过 frm.add_custom_button 添加,先判断 frm.is_new() 与 docstatus,按钮文案用 __() 包裹。
  7. 性能:set_query 只在 setup 注册;批量 set_value;缓存服务端响应;避免循环中查询。

限制:资料未提供具体收费、价格与授权信息;未提供完整 API 语法细节,需参考 frappe-syntax-clientscripts 等相关技能。