新規投稿
フォローする

innerTextをコントロールに代入する方法

出庫数の合計値を、出庫合計(数値)に代入したいのですが、
アラートでは、合計値は表示できるのですが、出庫合計(数値)フィールドに代入できません。

(function() {
"use strict";
kintone.events.on([
'app.record.detail.show',
], function(event){
relatedTableRowPlugin.getRowsFromSingleReferenceTable(0, event.record).then(function(rows){
var sumDom = document.createElement('div');
sumDom.innerText = rows.reduce(function(sum, row){
return sum + Number(row.出庫数.value);
}, 0);

event.record.出庫合計.value = sumDom.innerText;
window.alert(parseInt(sumDom.innerText));
});
});
})();
0

7件のコメント

Avatar
harada

同じ状態にできなかったのでわかりませんが

レコード追加イベント – cybozu developer network
https://developer.cybozu.io/hc/ja/articles/201941984#step4
最後のハンドラーが return しない場合、フィールドの値を更新しません。

returnをしないとフォームのフィールドの内容は更新されないようです。

 

0
Avatar
mls-hashimoto

イベントがレコード閲覧画面(app.record.detail.show)になっているためと思われます。

閲覧画面で同様の動作を行うのであれば、REST APIを使用する必要があります。

(function() {
'use strict';

kintone.events.on('app.record.detail.show', function(event){
var record = event.record, appId = event.appId, recordId = event.recordId;
var totalCount = record['出庫合計'].value;

relatedTableRowPlugin.getRowsFromSingleReferenceTable(0, event.record).then(function(rows){
var sumDom = document.createElement('div');
var sumNum = rows.reduce(function(sum, row) {
return sum + Number(row['出庫数'].value);
}, 0);
sumDom.innerText = sumNum;

var body = {
'app': appId,
'id': recordId,
'record': {
'出庫合計': {
'value': sumNum,
},
},
};

if (totalCount != sumNum) {
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function(resp) {
location.reload();
}, function(error) {
alert(JSON.stringify(error));
});
}
});

return event;
});
})();
0
Avatar
kintone_TS44

mls-hashimoto様

ご回答、誠にありがとうございました。
無事、思った通りの動きになりました。

kintone_TS44により編集されました
0
Avatar
kintone_TS44

一覧で、各レコードの在庫数を確認する方法は、どの様にすればよろしいのでしょうか?

0
Avatar
mls-hashimoto

kintone_TS44 さま

各レコードの在庫数とは、既にあるフィールドのことでしょうか?何かの数値から出庫数を引いた数量でしょうか?

前者であれば一覧の設定で追加でき、後者であれば計算フィールドを使用すれば可能と思われます。

0
Avatar
kintone_TS44

mls-hashimoto

計算フィールドを使用しているのですが、
一覧で更新出来ず、レコードを開かないと更新されません。

0
Avatar
mls-hashimoto

kintone_TS44 さま

レコード詳細閲覧時(app.record.detail.show)にレコードを更新するスクリプトを使用しているためです。

一覧で更新させる(恐らく理想は常に最新の情報であることと存じ上げます)のであればNode.js等で外部から更新させるか、一覧表示イベント(app.record.index.show)でrelatedTableRowPluginと同じクエリを作成してレコードを取得し、計算してレコードの一括更新(PUT)を掛ける必要があります。

https://developer.cybozu.io/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-#step2

0
サインインしてコメントを残してください。