2017-01-20 12 views
0

NetSuiteの特定の条件に基づいてレコードが削除されないようにします。しかし、私は検証の失敗イベントを見つけることができないようですか? UserEventのBeforeSubmitにはタイプのの削除がありますが、関数の戻り値がないため、falseを返すことはできません。SuiteScriptでレコードの削除を防止する

どのようにしてレコードの削除を防止するか、またはが失敗する特定のタイプのレコード提出が失敗しますか?

答えて

5

falseを返す代わりに、エラーをスローするだけです。ユーザーフレンドリーではありませんが、私が知る限り、それは唯一の選択肢です。

これはBefore Submitユーザーイベントにあるため、送信または削除に失敗します。

+0

これはそうです。ユーザイベントスクリプト中にレコードがデータベースに格納されるのを止める唯一の方法は、 'beforeSubmit'からErrorを投げることです。 – erictgrubaugh

+0

これを行う最も安全な方法(ベストプラクティス?)は何ですか?スロー関数?以前はこれまで使ったことはありませんでしたが、正しい解決策であるように見えますか? –

+0

関数をスローすることが正しい解決策になります。 SuiteScript 1.0でnlapiCreateErrorを使用してカスタムエラーを作成することもできます。 –

0

防止したいレコードを削除しようとすると、メッセージをユーザーにポップアップさせるためにクライアント側コードを追加できます。それでも、削除アクションを防ぐUserEventスクリプトを入れたいと思うでしょう。これにより、ユーザーが制限を通過するのを防ぐことができます

+0

これを行うクライアント側のイベントは何ですか?私は最初にそれを見ていましたが、私の現在の「計画」は、ユーザーが編集しようとするとユーザーを自動的にViewレコードにリダイレクトすることでしたが、 「削除」タイプ –

0

beforeSubmitユーザーイベントスクリプトを使用し、nlapiCreateErrorを使用してエラーをスローします。ここに例があります:

function beforeSubmit(type) { 
    if(type == 'delete') { 
    // NOTE `nlapiGetFieldValue` returns nil/empty during a delete event 
    //  `nlapiGetOldRecord` needs to be used to pull the entire record 

    var payment = nlapiGetOldRecord(); 

    if(payment.getFieldText('paymentmethod') == 'cash') { 
     throw nlapiCreateError(
     'AN_ERROR', 
     'Message to the user!', 
     true 
    ); 
    } 
    } 
} 
関連する問題