新規投稿
フォローする

AアプリテーブルからBアプリへレコード分割(新規登録と更新)

 

お世話になっております。

https://developer.cybozu.io/hc/ja/community/posts/360047876532

上記参考にしてみましたが、自分には難しかったため質問させてください。

 

Aアプリ(商品明細アプリ)とBアプリ(商品マスタ)があり、

Aアプリのテーブルに入れた情報をBアプリに新規登録と更新ができるようにしたく自分で作成してみたのですが、上手くいかず

根本的な考え方が間違っている可能性もあるので、レコード分割の場合の考え方について教えていただけないでしょうか。

 

私が作成したものは、Aアプリにてルックアップでレコード番号も取得し

「レコード番号があるものは更新、ないものは新規」という考え方で

カスタマイズを書いてみました。

 

参考になるURLやサンプルコード等ございましたら

ご教示いただきたいです。

 


//商品マスタの登録、更新test

(function() {
"use strict";
var check1 = ["app.record.create.show","app.record.edit.show"];
kintone.events.on(check1, function(event) {

var record = event.record;

console.log(record);

var putButton = document.createElement('button');

//ボタンの設定
putButton.innerText = '商品マスタへ新規登録・更新';
putButton.style.marginLeft = "10px";
putButton.style.fontWeight = "bold";
putButton.style.color = "white";
putButton.style.borderRadius = "8px";
putButton.style.borderColor = "#f0f8ff";
putButton.style.backgroundColor = "#228b22";
putButton.style.width = "230px";
putButton.style.height = "40px";

//ボタン押下時の処理
putButton.onclick = function () {

var appId = 62; //商品マスタアプリID
var rtableRecords1 = record.商品明細.value;

//レコード番号が空 = 商品マスタの新規登録の処理
//商品明細のテーブルをループし、bodyに格納していく。(テーブル項目全て)
for(var i = 0; i < rtableRecords1.length; i++){

if( rtableRecords1[i].value.レコードNo.value[0] === undefined ){

var rec = kintone.app.record.get();

console.log("rec:",rec);

var body = {

"app": appId,
"record": {
"商品マスタ検索": {
"value": []
},
"商品名": {
"value": rec.record.商品名.value
},
"会社名": {
"value": rec.record.会社名.value
},
"単価": {
"value": rec.record.単価.value
},
"レコードNo": {
"value": rec.record.レコードNo.value
}
}
};

console.log("body:",body);

//新規登録のため上記指定したbodyを製品マスタにPOST
kintone.api(kintone.api.url('/k/v1/record', true), 'POST', body, function(resp) {

console.log("resp:",resp);
alert("商品マスタ更新完了");

});

//レコード番号に値が入っている = 商品マスタ更新時の処理
} else {

//レコード番号を格納し、paramの生成
//var rec = kintone.app.record.get();
var recNo = rec.record.レコードNo.value;
var param = {app: appId, query: 'レコード番号 = "' + recNo + '"'};

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

//更新に必要な必須項目をbodyに格納(テーブル項目全て)
var body = {

"app": appId,
"id": resp.records[0].レコードNo.value,

"record": {
"商品マスタ検索": {
"value": []
},
"商品名": {
"value": rec.record.商品名.value
},
"会社名": {
"value": rec.record.会社名.value
},
"単価": {
"value": rec.record.単価.value
},
"レコードNo": {
"value": rec.record.レコードNo.value
}
}
};

//更新のため上記指定したbodyを商品マスタにPUT
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function(resp) {

alert("商品マスタ更新完了");

});

});
}

}
}

//テーブルの中のフィールドを活性化
for (var a = 0; a < record.商品明細.value.length; a++) {

record.商品明細.value[a].value.商品名.disabled = false;
record.商品明細.value[a].value.会社名.disabled = false;
record.商品明細.value[a].value.単価.disabled = false;

//kintone.app.record.set(event);
}

//ボタンを生成するスペースフィールドのスペースIDを指定
kintone.app.record.getSpaceElement('botan').appendChild(putButton);

return event;
});

var check2 = ["app.record.create.change.商品明細","app.record.edit.change.商品明細"];
kintone.events.on(check2, function(event) {

const record = event.record;

//テーブルの中のフィールドを活性化
for (var i = 0; i < record.商品明細.value.length; i++) {

record.商品明細.value[i].value.商品名.disabled = false;
record.商品明細.value[i].value.会社名.disabled = false;
record.商品明細.value[i].value.単価.disabled = false;

}

return event;
});
})(jQuery);

 

以上、よろしくお願いいたします。

0

0件のコメント

ログインしてコメントを残してください。