新規投稿
フォローする

関連サブテーブル行一覧プラグイン

関連レコード一覧の参照対象の単位を,「レコード」ではなく「サブテーブル行」にしたような機能を作ってみました.

プラグインファイル

下記からダウンロードしてください.
https://github.com/Atsushi-Eda/related-table-row/raw/master/plugin.zip

利用例

販売主マスタアプリに,関連サブテーブル行一覧プラグインを設置します. 購入管理アプリの購入商品から,販売主IDが一致する行を取得します. 表示は,レコード詳細画面の指定したスペースフィールド内に行います.

フォーム設定

・販売主マスタ

・購入管理

利用例ではルックアップを利用していますが,必要性はありません.

プラグイン設定

space

  • 関連サブテーブル行一覧を表示するスペースフィールド.
  • グループフィールド内のスペースフィールドは選択できません.
  • レコード追加画面,レコード編集画面では表示しません.

app

  • 参照するアプリのID.(半角数字)
  • アプリIDを入力後,searchボタンを押す.

subTable

  • 参照するサブテーブル.

conditions

  • レコードの絞り込み条件式.
  • 複数の場合は,andで評価.

conditions[].targetField

  • 絞り込み条件式に用いる,参照するアプリ内のフィールド.
  • 以下のフィールドタイプのフィールドは選択できません.
    「カテゴリー」,「subTableに指定していないサブテーブル内のフィールド」,「関連レコード内のフィールド」

conditions[].operator

  • 絞り込み条件式に用いる,演算子.
  • conditions[].targetFieldに合わせて選択肢が変わります.

conditions[].selfField

  • 絞り込み条件式に用いる,自アプリ内のフィールド.
  • 以下のフィールドタイプのフィールドは選択できません.
    「subTableに指定していないサブテーブル内のフィールド」,「関連レコード内のフィールド」

shows

  • 表示するフィールド.

shows[].field

  • 表示するフィールド.
  • 「添付ファイル」は画像ファイルの場合も,サムネイル表示しません.
  • 「ユーザー選択」,「組織選択」,「グループ選択」等はアイコンを表示しません.
  • 以下のフィールドタイプのフィールドは選択できません.
    「subTableに指定していないサブテーブル内のフィールド」,「関連レコード内のフィールド」

sorts

  • レコードのソート条件式.

sorts[].field

  • ソート条件式に用いる,参照するアプリ内のフィールド.
  • 以下のフィールドタイプのフィールドは選択できません.
    「作業者」,「カテゴリー」,「文字列 (複数行)」,「リッチエディター」,「チェックボックス」,「複数選択」,「添付ファイル」,「ユーザー選択」,「組織選択」,「グループ選択」,「subTableに指定していないサブテーブル内のフィールド」,「関連レコード内のフィールド」

sorts[].operator

  • ソート条件式に用いる,演算子.

※プラグインに利用しているフィールドの設定に変更があった場合は,プラグイン設定をやり直してください.

API

JavaScriptカスタマイズ用にAPIを用意しております. 関連サブテーブル行一覧と同条件でサブテーブル行の取得が可能です. プラグインJSの読み込み完了後に利用可能です.

relatedTableRowPlugin.getRowsFromSingleReferenceTable(index, record)

アプリ内の指定する1つの関連サブテーブル行一覧と同条件でサブテーブル行を取得します.

引数

返り値

Promiseオブジェクト

relatedTableRowPlugin.getRowsFromAllReferenceTables(record)

アプリ内の全ての関連サブテーブル行一覧と同条件でサブテーブル行を取得します.

引数

返り値

Promiseオブジェクト

APIの利用例

関連サブテーブル行一覧の値を用いて,値段の合計を計算します. 詳細画面の「space2」に表示します.

コード

JavaScriptカスタマイズにて,下記「sample.js」を読み込みます.

・sample.js

(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);
      kintone.app.record.getSpaceElement('space2').appendChild(sumDom);
    });
  });
})();
1

0件のコメント

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