サブテーブル内の項目をキーにして別アプリを更新(PUT)する処理で、たまにCB_IL02「不正なリクエストです」が出ます。

サブテーブルを持つアプリでCREATE SUBMIT 時にそのサブテーブル内の項目をキーとする別アプリを更新(PUT)する処理をしております。

ほとんどの場合は正常に双方のアプリは更新されます。

が、たまにCB_IL02「不正なリクエストです」のエラーが別アプリのPUT処理で発生します。

同じような環境でテストアプリを作って確認しておりますが、再現はしません。

サブテーブルの行数が多い場合とは限っておりません。

これを何とか解決したいと考えております。

このような処理をする場合、確実に正常に処理を完了させるにはどうすればいいのでしょうか?

また、「不正なリクエストです」が発生したときに原因を究明するための情報の取得方法等があればご教授いただけますとありがたいです。

よろしくお願いします。

 

function zaikoUpd(recno, shksu, clrsu) {
var query = ‘レコード番号 = ’ + recno + ’ limit 1’;
//在庫情報取得
return kintone.api(
kintone.api.url(‘/k/v1/records’,true) ,‘GET’, {
app: gzkmapp,
query: query,
totalCount: true
}).then (
function(resp){
updzkm(resp,recno,shksu,clrsu);
},
function(error){
console.log(‘在庫GETエラー’ + query);
}
);
}

// TPP在庫情報の在庫数量から出荷数量を減算する
function updzkm(resp,recno,shksu,clrsu) {
if (resp.totalCount > 0 ){
console.log(’ updzkm ’ + recno + ’ 処理します’);
var zansu = Number(resp.records[0].在庫数量.value) - Number(shksu);
var hiksu = Number(resp.records[0].引当数量.value) - Number(clrsu);
updzkmsub(recno,zansu,hiksu);
}
}
function updzkmsub(recno,zansu,hiksu){
var gupdatekey = Number(recno);
var tmpmsg= ‘【updzkmsub ’ + gupdatekey + ’ 更新開始 zansu=’ + zansu + ’ hiksu=’ + hiksu + ‘】’;
var gupdrec = {};
gupdrec[“在庫数量”]= {“value”: zansu };
gupdrec[“引当数量”]= {“value”: hiksu };

return kintone.api(
kintone.api.url(‘/k/v1/record’, true), ‘PUT’, {
app: gzkmapp,
id: gupdatekey,
record: gupdrec

}
).then (
function(resp) {
// success
console.log('— updzkmsub ok ’ + recno );
}
,function(error) {
// error
var err = error.message;
var errcd = error.code;
window.alert(“TPP在庫情報更新失敗” + tmpmsg + " エラー内容=" + errcd + " " + err );
}
);

 

 

長峰 さん

updzkm 呼び出しで、promise 処理の連携が出来ていませんので、

タイミングにより、API処理よりもイベント完了後の画面遷移が速く実行されるとエラーになります。

こんな感じで、処理が出来るように変更が必要です。

...
return updzkm(resp,recno,shksu,clrsu);
}).then (
...

rex0220 様

ご指摘いただいた通りに修正しました。

修正後はエラーは発生しておりません。

ありがとうございました。