新規投稿
フォローする

サブテーブル内の集計について

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

画像の赤枠の自動計算の実現は可能でしょうか。

可能でしたら、参考のソースコードなどを頂きたいです。

計算式は前の行の合計+倉庫(入庫)-倉庫(出庫)で手動で計算しております。

宜しくお願い致します。

0

2件のコメント

Avatar
mionix

こんにちは

左の赤枠だけですが、コードを書いてみました。

倉庫1入と倉庫1出の値が変更されたときに、上段の合計 + 倉庫1入 - 倉庫1出 で計算しています。

上段の合計はfor文でインデックス値 - 1で取得しています。

上段がない1行目はIF文で倉庫1入 - 倉庫1出 を計算しています。

右の赤枠も同じようにコード追加してみてください。

注意点として、上記画像の様に空欄では計算ができません。

0を入力するか、空白の場合は0を埋めてあげる処理が必要となります。

また、テーブルが削除されたときの処理は含まれていないので、

考慮するのであれば追加が必要です。

(function () {
  'use strict';
  var events = ['app.record.create.change.倉庫1入', 'app.record.edit.change.倉庫1入', 'app.record.create.change.倉庫1出', 'app.record.edit.change.倉庫1出'];
  kintone.events.on(events, function (event) {
    var record = event.record;
    // テーブルの行数が1だったら上段を見ない
    if (record['テーブル']['value'].length == 1) {
      record['テーブル']['value'][0]['value']['合計1']['value'] = parseInt(record['テーブル']['value'][0]['value']['倉庫1入']['value']) - parseInt(record['テーブル']['value'][0]['value']['倉庫1出']['value']);
    } else {
      for (var i = 1; i < record['テーブル']['value'].length; i++) {
        record['テーブル']['value'][i]['value']['合計1']['value'] = parseInt(record['テーブル']['value'][i - 1]['value']['合計1']['value']) + parseInt(record['テーブル']['value'][i]['value']['倉庫1入']['value']) - parseInt(record['テーブル']['value'][i]['value']['倉庫1出']['value']);
      }
    }
    return event;
  });
})();
mionixにより編集されました
1
Avatar
金城碧海

mionix 様

こんにちは。迅速なご対応感謝いたします。

早速試しました。とても悩んでいた課題なのでとても嬉しいです。

テーブルは削除しないので、このコードを使って、今後進めていきたいと思います。

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

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