送信ボタンの動作を編集したい

minami1
Tera Contributor

カスタマイズのテーブルでユニークインデックスを作成しており、レコードの内容にキー重複があった場合は送信ボタンを押下後に重複エラーのメッセージが表示されるという動作になっています。重複エラーのメッセージが表示された後、キー項目を重複しない値に修正した状態で送信ボタンを押下すると、「Invalid update. Record has been deleted or you no longer have access to read」というメッセージが出てレコードが保存できません。

キー項目を重複しない値に修正して送信ボタンを押した場合は保存が成功するように、送信ボタンのUIアクションを編集したいです。具体的にはどのような修正が必要でしょうか?

 

2件の返信2

newhand
Mega Sage

 

@minami1 

修正というよりは、新規に送信ボタンのUIアクションを実装したほうがいいと思います。

※ディフォルトの送信ボタンは表示されず、新規作成されたその送信ボタンが表示されるというSNOWの仕様がある。

 

UIアクションのスクリプトに重複チェック(単純なDB検索)を実施したうえで、重複なら処理を中止する(current.insert()コマンドを実行しない)ロジックを組めばともいます。

 

 

Please mark my answer as correct and helpful based on Impact.

ESL
ServiceNow Employee
ServiceNow Employee

こちらは既知のエラーとして報告されていて、OOTBのボタンを使うとこのエラーが発生しています。

PRB590876

 

現在OOTBボタンに対して対策はありませんが、キーをチェックできるロジックを組んだボタンを新しく作成することを推奨します。

 

UI Actionのサンプルコード:

//キーの値を取得
var name = current.u_name;  //"u_name"をキーとなるフィールド名に入れ替えてください。
//キーとなるフィールドが存在するかどうかをチェックする
var gr = new GlideRecord('u_demo_table'); //"u_demo_table"をカスタムテーブルの名前を入れ替えてください。
gr.addQuery('u_name', name);  //"u_name"をキーとなるフィールド名に入れ替えてください。
gr.query();
if (gr.next()) {
    gs.addErrorMessage('Nameが重複していますよ');  //キーが重複している場合エラーメッセージを表示
    current.setAbortAction(true);
    action.setRedirectURL(current); 
} else {
current.insert();  //なければレコードを挿入する
}

ご参考まで