用户事件提交事件之前和之后
beforeSubmit
和 afterSubmit
这两个事件由记录上的任何数据库写操作触发。只要用户,脚本,CSV 导入或 Web 服务请求尝试将记录写入数据库,就会触发 Submit 事件。
记录触发两个提交事件的操作:
- 创建
- 编辑
- 删除
- XEdit(内联编辑)
- 批准
- 拒绝
- 取消
- 包
- 船
记录仅触发 beforeSubmit
的操作:
- 标记完成
- 重新分配(支持案例)
- 编辑预测
记录仅触发 afterSubmit
的操作:
- 运输机
- 特殊订单
- 订单商品
- 支付帐单
beforeSubmit
的典型用例
- 在将记录提交到数据库之前验证记录
- 许可和限制检查
- 数据库提交前的最后更改
- 从外部系统中提取更新
afterSubmit
的典型用例
- 记录更改的电子邮件通知
- 浏览器重定向
- 创建/更新相关记录
- 推动对外部系统的更改
用户事件不会链接
用户事件中编写的代码不会触发其他记录上的任何用户事件。例如,从销售订单记录的 beforeSubmit
修改关联的客户记录将不会触发客户记录的提交事件。
NetSuite 这样做是为了避免用户事件在无限循环中相互触发。如果确实需要以链式序列触发用户事件,则需要在事件之间注入其他脚本类型(例如 RESTlet,Suitelet,Scheduled Scripts)。
事件处理程序返回 void
提交事件处理程序的返回类型是 void
。从我们的事件处理程序返回的任何数据都不会对系统产生影响。我们不需要从处理函数返回任何内容,因为我们实际上无法对其返回值执行任何操作。
! 小心!!
在比较旧记录和新记录之间的值时要非常谨慎。从空场旧纪录是返回 null
,而从空领域的新记录中为空字符串返回。这意味着你不能简单地比较旧的和新的,否则你会得到误报。你编写的任何逻辑都必须处理一个 null
和一个空字符串的情况。