レコード検索時のエラー表示について

下記の通りレコード編集画面を開いた際、マスターからレコードを参照し項目に表示するカスタマイズを行っております。
条件に合致するレコードがマスター側に無かった場合に画面上にエラーを表示させたく、下記の通りカスタマイズしましたが
編集画面上にエラーが表示されません。
どなたか対処方法をお分かりになられましたら、アドバイス頂けると助かります。

(function() {
"use strict";

var events = [
'app.record.edit.show'
];

kintone.events.on(events, function(event) {

var record = event.record;
var recordId = record["製品番号"].value;

if (recordId) {
kintone.api('/k/v1/records', 'GET', {
app: 100, // 参照先マスターのアプリID
query: '製品番号 = "' + recordId + '"',
fields: ['品名','番号','サイズ'],
},
function(resp) {
var param1 = resp['records'][0]['品名']['value'];
var param2 = resp['records'][0]['番号']['value'];
var param3 = resp['records'][0]['サイズ']['value'];
var record = kintone.app.record.get();
record['record']['品名']['value'] = param1;
record['record']['番号']['value'] = param2;
record['record']['サイズ']['value'] = param3;
kintone.app.record.set(record);
}, function(error) {
// error
event.error = 'マスターに合致する製品がありませんでした。';
});
return event;
}
});
})();

kintone.api は、非同期処理なので、REST API の終了を待たずに、return event; が実行され、イベント処理が終了します。

このような場合は、Promise 対応します。

kintoneにおけるPromiseの書き方の基本

 

あと、レコード取得で対象レコード数が0件でもエラーにはなりません。

取得レコード数をチェックしましょう。

rex0220様

お世話になります。アドバイス有難うございました。

下記のカスタマイズを行い、マスターに合致するレコードがない場合はメッセージを表示させることが出来る様になったのですが、
代わりに他のJavascriptでカスタマイズしている機能が動かなくなってしまいます。
(開発者ツールのコンソールには特にエラーは出力されておりません。)
コーディングに誤りなどございましたらご指摘頂けると助かります。

(function() {
"use strict";

var events = [
'app.record.edit.show'
];

kintone.events.on(events, function(event) {

var record = event.record;
var recordId = record["製品番号"].value;

if (recordId) {

var body = {
"app": 46, // 型格マスターのアプリID
"query": '製品番号 = "' + recordId + '"',
"fields": ['品名','番号','サイズ'],
};

return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {

if (resp.records.length) {
var records = resp.records;
var rec = records[0];

var param1 = rec['品名'].value;
var param2 = rec['番号'].value;
var param3 = rec['サイズ'].value;
event.record['品名'].value = param1;
event.record['番号'].value = param2;
event.record['サイズ'].value = param3;

}else{
event.error = '型格マスターに合致する型格がありませんでした。依頼者へ確認下さい。';
}
return event;
});

}

});

})();

とりあえず、製品番号未入力の場合、 return event; しましょう。

あとは、他のJavascript の処理内容、問題の発生条件等が不明ですので、わかりません。

他のJavascript が同じく非同期処理などであれば、型格マスター検索中に他のJavascript が処理終了し、その後上書きしているなどが考えられます。

そのような場合は、非同期処理を すべて Promise 対応して順番に処理が行われるように制御します。