NetSuiteの特定の条件に基づいてレコードが削除されないようにします。しかし、私は検証の失敗イベントを見つけることができないようですか? UserEventのBeforeSubmitにはタイプのの削除がありますが、関数の戻り値がないため、falseを返すことはできません。SuiteScriptでレコードの削除を防止する
どのようにしてレコードの削除を防止するか、またはが失敗する特定のタイプのレコード提出が失敗しますか?
NetSuiteの特定の条件に基づいてレコードが削除されないようにします。しかし、私は検証の失敗イベントを見つけることができないようですか? UserEventのBeforeSubmitにはタイプのの削除がありますが、関数の戻り値がないため、falseを返すことはできません。SuiteScriptでレコードの削除を防止する
どのようにしてレコードの削除を防止するか、またはが失敗する特定のタイプのレコード提出が失敗しますか?
falseを返す代わりに、エラーをスローするだけです。ユーザーフレンドリーではありませんが、私が知る限り、それは唯一の選択肢です。
これはBefore Submitユーザーイベントにあるため、送信または削除に失敗します。
防止したいレコードを削除しようとすると、メッセージをユーザーにポップアップさせるためにクライアント側コードを追加できます。それでも、削除アクションを防ぐUserEventスクリプトを入れたいと思うでしょう。これにより、ユーザーが制限を通過するのを防ぐことができます
これを行うクライアント側のイベントは何ですか?私は最初にそれを見ていましたが、私の現在の「計画」は、ユーザーが編集しようとするとユーザーを自動的にViewレコードにリダイレクトすることでしたが、 「削除」タイプ –
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
);
}
}
}
これはそうです。ユーザイベントスクリプト中にレコードがデータベースに格納されるのを止める唯一の方法は、 'beforeSubmit'からErrorを投げることです。 – erictgrubaugh
これを行う最も安全な方法(ベストプラクティス?)は何ですか?スロー関数?以前はこれまで使ったことはありませんでしたが、正しい解決策であるように見えますか? –
関数をスローすることが正しい解決策になります。 SuiteScript 1.0でnlapiCreateErrorを使用してカスタムエラーを作成することもできます。 –