SuperAPI AI 工具集

erpnext-errors-clientscripts

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:为 ERPNext/Frappe 的 Client Scripts 提供错误处理模式,帮助在表单脚本中正确捕获、反馈和调试错误。兼容 v14/v15/v16。语法见 erpnext-syntax-clientscripts,实现流程见 erpnext-impl-clientscripts。

主要能力:按错误类型选择处理方式——校验错误用 frappe.throw() 阻止保存;警告用 frappe.msgprint() 配合 indicator;服务端调用失败用 try/catch 与 async/await 或回调 error 处理;字段提示用 frm.set_intro() 或字段描述;调试用 console.log/warn/error 与 frappe.show_alert。反馈方法区分是否阻止保存:frappe.throw() 阻止保存且需手动关闭;frappe.msgprint() 不阻止但需关闭;frappe.show_alert() 自动消失;frm.set_intro() 与 frm.dashboard.set_headline() 不阻止也不需操作。

使用方式:在 frappe.ui.form.on 的事件中编写逻辑。同步校验可收集多个错误后一次性 frappe.throw;异步服务端调用用 try/catch 包裹 frappe.call,失败时记录日志并给出用户友好提示;回调方式需提供 error 回调。子表校验遍历 frm.doc.items 收集行级错误。调试可用 frappe.boot.developer_mode 做条件日志。

适用场景:销售订单、销售发票等表单的校验、服务端数据获取、子表检查与优雅降级。

限制与规则:frappe.throw() 仅在 validate 事件中能阻止保存,其他位置只中断脚本;异步调用必须捕获异常;用户可见文本用 __() 翻译;不要向用户暴露技术错误;不要使用 alert()/confirm();生产环境避免遗留 console.log。更多模式见 references/patterns.md、examples.md、anti-patterns.md。