使用者事件提交事件之前和之後
beforeSubmit
和 afterSubmit
這兩個事件由記錄上的任何資料庫寫操作觸發。只要使用者,指令碼,CSV 匯入或 Web 服務請求嘗試將記錄寫入資料庫,就會觸發 Submit 事件。
記錄觸發兩個提交事件的操作:
- 建立
- 編輯
- 刪除
- XEdit(內聯編輯)
- 批准
- 拒絕
- 取消
- 包
- 船
記錄僅觸發 beforeSubmit
的操作:
- 標記完成
- 重新分配(支援案例)
- 編輯預測
記錄僅觸發 afterSubmit
的操作:
- 運輸機
- 特殊訂單
- 訂單商品
- 支付帳單
beforeSubmit
的典型用例
- 在將記錄提交到資料庫之前驗證記錄
- 許可和限制檢查
- 資料庫提交前的最後更改
- 從外部系統中提取更新
afterSubmit
的典型用例
- 記錄更改的電子郵件通知
- 瀏覽器重定向
- 建立/更新相關記錄
- 推動對外部系統的更改
使用者事件不會連結
使用者事件中編寫的程式碼不會觸發其他記錄上的任何使用者事件。例如,從銷售訂單記錄的 beforeSubmit
修改關聯的客戶記錄將不會觸發客戶記錄的提交事件。
NetSuite 這樣做是為了避免使用者事件在無限迴圈中相互觸發。如果確實需要以鏈式序列觸發使用者事件,則需要在事件之間注入其他指令碼型別(例如 RESTlet,Suitelet,Scheduled Scripts)。
事件處理程式返回 void
提交事件處理程式的返回型別是 void
。從我們的事件處理程式返回的任何資料都不會對系統產生影響。我們不需要從處理函式返回任何內容,因為我們實際上無法對其返回值執行任何操作。
! 小心!!
在比較舊記錄和新記錄之間的值時要非常謹慎。從空場舊紀錄是返回 null
,而從空領域的新記錄中為空字串返回。這意味著你不能簡單地比較舊的和新的,否則你會得到誤報。你編寫的任何邏輯都必須處理一個 null
和一個空字串的情況。