使用者事件提交事件之前和之後

beforeSubmitafterSubmit

這兩個事件由記錄上的任何資料庫寫操作觸發。只要使用者,指令碼,CSV 匯入或 Web 服務請求嘗試將記錄寫入資料庫,就會觸發 Submit 事件。

記錄觸發兩個提交事件的操作:

  • 建立
  • 編輯
  • 刪除
  • XEdit(內聯編輯)
  • 批准
  • 拒絕
  • 取消

記錄僅觸發 beforeSubmit 的操作:

  • 標記完成
  • 重新分配(支援案例)
  • 編輯預測

記錄僅觸發 afterSubmit 的操作:

  • 運輸機
  • 特殊訂單
  • 訂單商品
  • 支付帳單

beforeSubmit 的典型用例

  • 在將記錄提交到資料庫之前驗證記錄
  • 許可和限制檢查
  • 資料庫提交前的最後更改
  • 從外部系統中提取更新

afterSubmit 的典型用例

  • 記錄更改的電子郵件通知
  • 瀏覽器重定向
  • 建立/更新相關記錄
  • 推動對外部系統的更改

使用者事件不會連結

使用者事件中編寫的程式碼不會觸發其他記錄上的任何使用者事件。例如,從銷售訂單記錄的 beforeSubmit 修改關聯的客戶記錄將不會觸發客戶記錄的提交事件。

NetSuite 這樣做是為了避免使用者事件在無限迴圈中相互觸發。如果確實需要以鏈式序列觸發使用者事件,則需要在事件之間注入其他指令碼型別(例如 RESTlet,Suitelet,Scheduled Scripts)。

事件處理程式返回 void

提交事件處理程式的返回型別是 void。從我們的事件處理程式返回的任何資料都不會對系統產生影響。我們不需要從處理函式返回任何內容,因為我們實際上無法對其返回值執行任何操作。

! 小心!!

在比較舊記錄和新記錄之間的值時要非常謹慎。從空場紀錄是返回 null,而從空領域的記錄中為空字串返回。這意味著你不能簡單地比較舊的和新的,否則你會得到誤報。你編寫的任何邏輯都必須處理一個 null 和一個空字串的情況。