関連レコード一覧から合計金額を算出しましたが編集ボタンを押さないと値が反映しません

今回初めてお世話になります。どうぞよろしくお願いいたします。

 

以下のマスタがあります
・会社マスタ
・グループ会社マスタ

グループ会社マスタに、
「関連レコード一覧」フィールドを利用し、
「関連会社一覧」として、それぞれのマスタにある「グループコード」で紐づけ
関連会社のとある金額を表示させています。

その金額の合計を表示させたかったので、
・「合計金額」フィールドを作成し
・javascriptを利用し、合計金額を表示させるようにしました。

しかし、値を取得できたのはいいのですが、
「編集ボタン」を押さないと値がフィールドに表示されません。

私のしたいイメージとしては、
・ページを開く⇒値が「合計金額」フィールドに表示されている
もしくは
・表示されていなくても、「グループ会社マスタ」を全件(何かしらの条件で)更新すれば値が反映される

上記でしたが、
今のところ1000件以上登録されているデータに対し、1件1件「編集ボタン」を押していかないと
値が表示されないため、対応策を探している状態ですが、なかなかうまくいきません。

私が実装したコードは以下です。

初心者極まりないご質問で大変恐縮ですが、どうぞご教示頂けると幸いです。

(function() {
'use strict';
kintone.events.on(['app.record.edit.show','app.record.detail.show'], function(event) {
const appId = kintone.app.getRelatedRecordsTargetAppId("関連会社一覧");
const query = 'グループコード="' + event.record['グループコード'].value + '"';
const body = {
'app' : appId,
'query' : query
};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
var sum = 0;
resp.records.forEach((record)=>{
sum += record['金額'].value ? parseInt(record['金額'].value) : 0;
});
//合計金額フィールドにsumを代入
event.record['合計金額'].value = sum;
//eventにセット
kintone.app.record.set(event);
});

return event;
});

})();

UMEさん、はじめまして。

 

編集ボタンを押さないと更新されない原因ですが、レコード詳細画面ではkintone.app.record.set()は動かないようです。

レコード詳細情報取得

そのため、指定している’app.record.detail.show’は動いていないことになります。

 

次に解決方法ですが、イメージされている2点目の、グループ会社マスタの全件更新機能を実装するのはどうでしょうか。

APIを使って関連会社のレコードを取得し、記載いただいているコードを流用して、全件に適用する。というのが順当なんじゃないかと思います。

Ribbit様

ご回答いただきありがとうございます。。!

「レコード詳細情報取得」のページを確認し、以下が原因であると認識しました。

目を通してはしていたのですが、よく意味を分かっておらず、そういうことだったのですね。。

*********

「kintone.events.on のインベントハンドラ内で kintone.app.record.set および kintone.mobile.app.record.set を実行することはできません。 上記のイベントハンドラ内ではレコードデータの取得は引数のeventオブジェクトを、レコードデータの更新はeventオブジェクトのreturnを使用してください。」

*********

教えて頂いて非常に助かりました。

 

全件更新ですがリンクのような感じなのでしょうか。。?

https://tokux2shop.xyz/kintone-6/1051/ 

少し違うかもしれませんが、また調べてみたいと思います!

 

 

 

 

 

 

添付いただいたリンクのイメージに間違いはないと思います。

ただ、今回は1000件以上を対象とされるとのことですので、APIが一度に処理できるレコード件数には注意が必要です。

制限値一覧

 

ちなみにですが、今回の目的が集計値を閲覧したいということであれば、プラグインを検討されるのも良いかもしれません。

例えばこちらの場合、集計値を関連テーブルに表示させることができます。

Ribbit様

早速のご返答ありがとうございます!

また注意点やプラグインまで教えて頂きありがとうございます。。!

再度確認して実現できるように頑張ります。

この度は本当にありがとうございました。