テスト環境で実行しているのですが、サポートいただければと思います。
アプリ(ID:24)のサブテーブルに入力した内容をアプリ(ID:23)のサブテーブルにコピーしたいのですが、POSTでエラー(code: ‘CB_VA01’)が発生してしまいます。
以下、コードとなります。
(() => {
‘use strict’;
kintone.events.on([
‘app.record.create.submit’, ‘app.record.edit.submit’
], async (event) => {
let record= event.record;
let copyFields = [‘明細行ID’, ‘行の種類’, ‘請求明細名’, ‘数量’, ‘単位’, ‘単価’, ‘金額’];
let subTableValue = [];
record[‘請求書’].value.forEach((row) => {
let subTableRow = {value: {}};
copyFields.forEach((field) => {
subTableRow.value[field] = {
value: row.value[field].value
};
});
subTableValue.push({
“明細行ID”:{“value”:subTableRow.value.明細行ID.value},
“行の種類”:{“value”:subTableRow.value.行の種類.value},
“請求明細名”:{“value”:subTableRow.value.請求明細名.value},
“数量”:{“value”:subTableRow.value.数量.value},
“単位”:{“value”:subTableRow.value.単位.value},
“単価”:{“value”:subTableRow.value.単価.value},
“金額”:{“value”:subTableRow.value.金額.value}
});
});
let paramForGetStock1 = {
“app”: 23,
“query”: 請求月 = ${record['請求月'].value} and 取引先コード = "${record['取引先コード'].value}"
}; console.log(paramForGetStock1);
let resp = await kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, paramForGetStock1);
if (resp.records.length) {
subTableValue.forEach((row) => {
let matchIndex = resp.records[0][‘請求明細行’].value.findIndex((respRow) => respRow.value[‘明細行ID’].value === row.value[‘明細行ID’].value);
if (matchIndex >= 0) {
resp.records[0][‘請求明細行’].value[matchIndex].value = row.value;
} else {
resp.records[0][‘請求明細行’].value.push(row.value);
}
});
let putRecord = {
app:23,
id: resp.records[0][‘$id’].value,
record: {
‘請求明細行’: {
value: resp.records[0][‘請求明細行’].value
}
}
};console.log( resp.records[0][‘$id’].value);
await kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, putRecord);
} else {
console.log(“テスト1”);
let postRecord = {
app: 23,
record:subTableValue
// “record”: {
// ‘請求明細行’: {
// value: subTableValue
// }
// }
};console.log(postRecord);
await kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘POST’, postRecord);
}
return event;
});
})();