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

テーブル内に、複数のお客様リストを登録します。

その中の1件を普通のフィールドにセットしたいと考えています。

テーブル内のレコード番号を入力する数値フィールドを作成し、

その数値が変更したときに、ボタンを表示させ、

ボタンをクリックしたら、テーブル内の指定レコード番号のフィールドデータを

普通のフィールドにセットするようにしたいのですが、

データの確認用に画面に指定したレコード番号をメッセージ表示させることはできるのですが、

肝心のデータのセットが動作しません。

次のような記述で作成しています。どなかた助けてください。


(function () {
“use strict”;
var events1 = [‘app.record.create.change.MainTokNo’,‘app.record.edit.change.MainTokNo’];
kintone.events.on(events1, function (event) {
var record = event.record;
var CtableRecords = event.record.Customer.value;

var SMsg = ‘テスト中です。’;
var ErrMsg = ‘主得意先Noは、関連するお客様の件数以下にしてください。。’;

// 任意のスペースフィールドにボタンを設置
var mySpaceFieldButton = document.createElement(‘button’);
mySpaceFieldButton.id = ‘my_space_field_button’;
mySpaceFieldButton.innerHTML = ‘主得意先をセットするならクリック’;
mySpaceFieldButton.onclick = function () {
if ( record.MainTokNo.value > record.Customer.value.length ) {
window.alert(ErrMsg);
}else{
var i = record.MainTokNo.value-1;
var TC = CtableRecords[i].value[‘TOKCD_T’].value;
var TN = CtableRecords[i].value[‘TOKNM_T’].value;
var TTN = CtableRecords[i].value[‘TOKTANNM_T’].value;
var TMNN = CtableRecords[i].value[‘見積番号_T’].value;
record[‘TOKCD’][‘value’] = TC;
//record[‘文字列_0’][‘value’] = ‘この文字列で上書き’;
record[‘TOKNM’][‘value’] = TN;
record[‘TOKTANNM’][‘value’] = TTN;
record[‘見積番号’][‘value’] = TMNN;
window.alert(TC+TN+TTN+TMNN);
//window.alert(SMsg);
}

}

kintone.app.record.getSpaceElement(‘my_space_field’).appendChild(mySpaceFieldButton);

});
})();


 

 

Shoji Shinodaさん

cstapの瀧ヶ平です。

おそらくイベントハンドラー内でeventオブジェクトをreturnしていないことが原因だと思います。

瀧ヶ平さん ありがとうございます。

最後のほうに、次のように追加してみましたが、結果は変わりませんでした。

難しいものです。


window.alert(TC+TN+TTN+TMNN);
//window.alert(SMsg);
}

}
kintone.app.record.getSpaceElement(‘my_space_field’).appendChild(mySpaceFieldButton);
return event; //ここに追加しました。
});
})();


Shoji Shinodaさん

onclick内の処理なのでイベントハンドラーによるレコードの変更はできないですね、すいません。

なのでonclick内の処理最初の行に

var record = kintone.app.record.get().record;
var CtableRecords = record.Customer.value;

処理最後の行に

kintone.app.record.set({record:record});

を追加すれば解決するかと思います

瀧ヶ平さん

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

狙い通りの動作ができました。

これからも、Javascriptを利用してkintoneをより有効に活用していきます。


mySpaceFieldButton.onclick = function () {

var record = kintone.app.record.get().record;
var CtableRecords = record.Customer.value;

if ( record.MainTokNo.value > record.Customer.value.length ) {
window.alert(ErrMsg);
}else{
var i = record.MainTokNo.value-1;
var TC = CtableRecords[i].value[‘TOKCD_T’].value;
var TN = CtableRecords[i].value[‘TOKNM_T’].value;
var TTN = CtableRecords[i].value[‘TOKTANNM_T’].value;
var TMNN = CtableRecords[i].value[‘見積番号_T’].value;
record[‘TOKCD’][‘value’] = TC;
record[‘TOKNM’][‘value’] = TN;
record[‘TOKTANNM’][‘value’] = TTN;
record[‘見積番号’][‘value’] = TMNN;
window.alert(TC+TN+TTN+TMNN);
}
kintone.app.record.set({record:record});

}