普通のフィールドデータを、テーブルのフィールド1行目に上書き

今までは、明細1行だけでよかったものを、ユーザーの希望で複数明細を登録する事になりました。

テーブルを使用したいのですが、過去のデータのフィールドの値を、全レコードについて、テーブルに移動する必要があります。

そこで、作業を簡略化するために、

詳細画面を開いて編集状態にした時にボタンを表示し、クリックすると、自動で、通常フィールドのテキストをテーブルの1行目のフィールドにコピーするようにしたいと思いました。

次のように作成しましたが、動作しません。

どなたか助けてください。

(function () {
“use strict”;
var events1 = [‘app.record.edit.show’];
kintone.events.on(events1, function (event) {
var mySpaceFieldButtonM = document.createElement(‘button’);
mySpaceFieldButtonM.id = ‘my_space_field_button_M’;
mySpaceFieldButtonM.innerHTML = ‘Modelサイズを明細へコピーするならクリック’;
mySpaceFieldButtonM.onclick = function () {
var record = kintone.app.record.get().record;
var MtableRecords = record.ModelMeisai.value;
var MV = record[‘MODEL0’].value;
//サブテーブルの1行目、フィールド MODEL にMODEL0の値を追加
record[‘MtableRecords’][‘value’][0][‘value’][‘MODEL’][‘value’] = MV;
kintone.app.record.set({record:record});
}
kintone.app.record.getSpaceElement(‘my_space_field_M’).appendChild(mySpaceFieldButtonM);
return event;
});
})();

初めまして

アイティー・プラス・ワンのみなとんといいます。

サブテーブルの名前が「ModelMeisai」であるという仮定でお話しします。

 

15行目の

record['MtableRecords']['value'][0]['value']['MODEL']['value'] = MV;

MtableRecords[0]['value']['MODEL']['value'] = MV;

にすることで、私の方では正常に動作しました。

サブテーブルへの参照の仕方が途中で違ってしまっていることが原因かと思われます。

Shoji Shinodaさんの15行目をそのまま生かしたいのであれば下記のようにすると正しく動作するかと。

record['ModelMeisai']['value'][0]['value']['MODEL']['value'] = MV;

※その場合は12行目の処理は不要となります。

 

参考になりましたら幸いです。

大湊健

ありがとうございます。

MtableRecords[0]['value']['MODEL']['value'] = MV;

これだけでセットできました。
助かりました。
ユーザーに喜んでもらえそうです。