logo

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

無料ブログはココログ

« Reports Connect for Kintone アプリへの組込み方法 | トップページ | Reports Connect for Kintone テーブルのデータの読込その2 »

Reports Connect for Kintone テーブルのデータの読込

kintoneでは、ヘッダー明細型の伝票のような形式を表現する方法として、テーブルという機能があります。
今回は、テーブルを使用した場合にそのデータをReports Connectで使用する方法について解説します。

まず、対象となるアプリとして以下のようなアプリを作成しました。

20131209_15h56_03
合計金額、金額は「計算」型を使用しています。下部にテーブルを設定しています。テーブルのフィールドコードには「明細」という名前を付けました。

20131114_15h23_05

実際にデータを入れたものが、以下です。

20131114_15h02_49

すでに印刷用のボタンが組み込まれていますが、この組み込み方法は後ほど解説します。

次に、Reports Connectアプリに対応する帳票レコードを作成します。

20131114_15h05_25_2
テーブルを使用する場合は、「テーブル」というフィールドに出力するテーブルのフィールドコードを指定します。
なお、「テーブル」には、テーブルを読む際のソート順をorder byで指定する事も可能です。
対象のレコード番号をとりあえず先ほど入力したレコードに設定していますが、これはアプリ組み込み後はJavascriptで現在開いているレコードの番号で上書きします。
添付ファイルにはjrxmlファイルと帳票で使用するイメージを添付しています。

データの確認ボタンを押してCSVDatasourceをダウンロードすると、以下のようなデータが出力されます。

20131114_15h32_09

帳票レコードの「テーブル」を設定した場合は、1件の元レコードに対して、テーブルの件数分のデータが作成されます。この場合は3件作成されました。

内容は、テーブル各行のデータおよびヘッダーの内容が連結されます。

SQLで言うと、ヘッダーと明細をouter joinしたイメージになります。

ちなみに、「テーブル」を設定しなかった場合は、テーブルのデータはsubクエリーを発行したようなデータ構造となって出力されます。

このケースはiReportのsubreportを使用して帳票を作成することになりますが、その方法は少々複雑なので、別途解説します

iRepotでのjrxmlファイル作成は以下のように、見積書が印刷されるようにしました。

20131114_15h40_06

さて、アプリへの組み込みには、以下の様なJavascriptを使用します。

なお、Reports Connect for Kintoneのアプリへの組み込み方法については、Reports Connect for Kintone アプリへの組込み方法を参照してください。

-------------------------------------

/*
* 商談 見積もり印刷
*/
(function() {

    //①ReportsConnectのライブラリーをロードする
    load("https://kps-reportsconnectk.herokuapp.com/js/kpsrck.js");
    //②ロード完了後kpsrc.setupReportを呼び出す
    waitLoaded(function(){
        kpsrc.setupReport(17, "商談見積もり");
    });
    //③詳細表示時に、印刷ボタンを追加する(bt1はボタン配置スペースの要素ID)
    kintone.events.on('app.record.detail.show', function(event) {
            var bt = document.createElement('input');
            bt.type = "button";
            bt.value = "見積印刷";
            bt.onclick = goPrint;
            var btsp = kintone.app.record.getSpaceElement("bt1");
            btsp.appendChild(bt);
        });
    //④印刷ボタン押下時の処理。kpsrc.rcparms.kps_recidに現在のレコードIDを動的に設定し
    //kpsrc.gorcprint呼び出す
    function goPrint() {
        kpsrc.rcparms.kps_recid = kintone.app.record.getId();
        kpsrc.gorcprint();
    }
    //以下の関数はそのままコピペしてください。
    // http ヘッダに要素を追加します
    function load(src) {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = src;
        head.appendChild(script);
    }
    // ReportsConnect がロードされるまで待ちます
    var timeout = 10 * 1000; // ms
    var interval = 100; // ms
    function waitLoaded(callback,parm) {
        setTimeout(function() {
            timeout -= interval;
            if (typeof kpsrc !== 'undefined') {
                callback(parm);
            } else if (timeout > 0) {
                waitLoaded(callback,parm);
            } else {
                // abort
            }
        }, interval);
    }
})();

---------------------------------------------------

Reports Connect for Kintone アプリへの組込み方法で解説したケースと違うのは、こちらは詳細画面にボタンを設置するので、kintone.app.record.getFieldElement関数で、フィールドのエレメントを取って、その下にボタンを設置している点と、印刷ボタン押下時にkpsrc.rcparms.kps_recidに現在のレコード番号を設定している点です。

で、実際にアプリでレコードを選んで詳細画面からボタンを押すと、以下のように見積もり書が出力できました。

20131114_15h51_43

なお、今回作成したjrxmlファイルはこちらからダウンロードできます。

estimatesd.jrxml

« Reports Connect for Kintone アプリへの組込み方法 | トップページ | Reports Connect for Kintone テーブルのデータの読込その2 »

Kintone」カテゴリの記事

Reports Connect」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1482716/53932645

この記事へのトラックバック一覧です: Reports Connect for Kintone テーブルのデータの読込:

« Reports Connect for Kintone アプリへの組込み方法 | トップページ | Reports Connect for Kintone テーブルのデータの読込その2 »