新規投稿
フォローする

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

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

プラグインファイル

下記からダウンロードしてください.
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

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

※プラグインに利用しているフィールドの設定に変更があった場合は,プラグイン設定をやり直してください.
※ソート条件は1つ以上設定する必要があります.今後,ソート条件なしでも動作するよう修正する予定です.

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);
    });
  });
})();
2

9件のコメント

Avatar
渡部洋三

解決方法を検索していたら、このページに辿り着きました。

本ページにリンクのあるプラグインのインストールと、利用例そのままのアプリ構成で試しましたところ、

[space1]枠にサブテーブルの内容が表示されません。
※space2の合計表示は実施してません

現在のキントーンのバージョンでは使用できない状態でしょうか?
または、このページしか見てませんが、ここに記載されていない別なJavaScriptを読み込ませる必要がございますでしょうか?

大変お手数お掛け致しますが、ご回答頂けるとうれしいです。

0
Avatar
江田篤史

渡部洋三さん

お世話になっております.
コメント頂きありがとうございます.

確認しましたところ,2021/1/20現在で問題なく利用できました.
別途で必要なJavaScriptなどはございません.

可能でしたら,下記などを参考にコンソール画面にエラーが表示されていないかご確認いただけますか?
動かない?そんな時はデバッグをしてみよう!入門編

江田篤史により編集されました
1
Avatar
渡部洋三

江田さん

すいませんでした。解決しました!

原因は、プラグイン側のソートの設定が漏れていて、ソートの設定をしたら表示されるようになりました。
ソートの設定が必須とは知らず大変お手数をお掛け致しました。申し訳ございませんでした。

0
Avatar
江田篤史

渡部さん

こちらこそ申し訳ございません.
明記しておくべきでした.

記事の方,修正いたします.

1
Avatar
渡部洋三

江田さん

 この機能は非常に便利です!大変ありがとうございました。
 ユーザー側のページ遷移の手間が1つ減るので、作業生産性がぐっと上がります!

1
Avatar
江田篤史

渡部さん

そう言って頂けてとても嬉しいです.

利用していて不便な部分や,追加でほしい機能などございましたら,コメント頂けると幸いです.
全てのご要望にはお応えできないとは思いますが.

今後ともよろしくお願いいたします.

1
Avatar
kintone_TS44

関連サブテーブル行一覧プラグインを使用し、データを表示する事は出来たのですが、
その表示したデータを取得する方法はありますでしょうか?

例えば、ボタン押下で、表示されているデータをtxt形式に出力する方法などです。

 

 

0
Avatar
江田篤史

kintone_TS44さん

返信が遅くなり、申し訳ございません。

APIの利用例と同様に、relatedTableRowPlugin.getRowsFromSingleReferenceTable()で取得できます。

取得結果(sample.jsで言うところのrows)は配列なので、JSON.stringify()などで文字列にすると良いです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

txtファイル出力については、下記などが参考になるかと思います。
https://techacademy.jp/magazine/28206

0
Avatar
gsc-hnd-dad

別スレッドよりこちら紹介していただき無事機能させる事できました。

ひとつ要望なのですが、表示させる条件を追加出来るとよりありがたいかなと思いました。

例えばですが、参照先日付フィールド<>””(空でない場合)

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