用户事件提交事件之前和之后

beforeSubmitafterSubmit

这两个事件由记录上的任何数据库写操作触发。只要用户,脚本,CSV 导入或 Web 服务请求尝试将记录写入数据库,就会触发 Submit 事件。

记录触发两个提交事件的操作:

  • 创建
  • 编辑
  • 删除
  • XEdit(内联编辑)
  • 批准
  • 拒绝
  • 取消

记录仅触发 beforeSubmit 的操作:

  • 标记完成
  • 重新分配(支持案例)
  • 编辑预测

记录仅触发 afterSubmit 的操作:

  • 运输机
  • 特殊订单
  • 订单商品
  • 支付帐单

beforeSubmit 的典型用例

  • 在将记录提交到数据库之前验证记录
  • 许可和限制检查
  • 数据库提交前的最后更改
  • 从外部系统中提取更新

afterSubmit 的典型用例

  • 记录更改的电子邮件通知
  • 浏览器重定向
  • 创建/更新相关记录
  • 推动对外部系统的更改

用户事件不会链接

用户事件中编写的代码不会触发其他记录上的任何用户事件。例如,从销售订单记录的 beforeSubmit 修改关联的客户记录将不会触发客户记录的提交事件。

NetSuite 这样做是为了避免用户事件在无限循环中相互触发。如果确实需要以链式序列触发用户事件,则需要在事件之间注入其他脚本类型(例如 RESTlet,Suitelet,Scheduled Scripts)。

事件处理程序返回 void

提交事件处理程序的返回类型是 void。从我们的事件处理程序返回的任何数据都不会对系统产生影响。我们不需要从处理函数返回任何内容,因为我们实际上无法对其返回值执行任何操作。

! 小心!!

在比较旧记录和新记录之间的值时要非常谨慎。从空场纪录是返回 null,而从空领域的记录中为空字符串返回。这意味着你不能简单地比较旧的和新的,否则你会得到误报。你编写的任何逻辑都必须处理一个 null 和一个空字符串的情况。