保存時タイミングではなく、フィールドの編集タイミングでその入力値が重複していないかをチェックし、重複していたらフィールドにエラーメッセージを表示したいです。(保存タイミングでのチェックですと、その他色々なフィールドの入力作業が無駄になるため)
下記のコードで重複チェックまでは行いましたが、フィールドへのエラ〜メッセージが反映されません。
// 品番・型番が編集されたタイミングで重複チェックし、重複していたら
// フィールド部分にアラートを表示する
const f_item_no = "品番・型番"
kintone.events.on(['app.record.create.change.' + f_item_no, 'app.record.edit.change.' + f_item_no], function(event) {
let record = event.record;
let item_no = record[f_item_no].value;
let query = f_item_no + ' = "' + item_no + '" limit 1';
let body = {
'app':kintone.app.getId(),
'query':query
};
kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body, function(resp) {
let rec_counts = resp["records"].length;
if(rec_counts>0){
event.record[f_item_no].error = "重複する「品番・型番」が存在します";
}
else{
event.record[f_item_no].error = null;
}
console.log(event)
return event;
}, function(error) {
console.log(error)
event.error = "エラー発生。管理者に連絡してください"
return event;
});
});
フィールド値変更イベントはPromise対応していないため同期的な処理をどうすれば良いかがわかっていない状況です。
よろしくお願いします
ーー追記ーー
一つ回避方法がありましたので記載します。
重複チェック方法として「関連レコード」で同アプリの入力値と一致するレコードを表示する、というものです。
これと同様の動作をAPIでできるとよりスマートなのですが。。。