logo

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

最近のトラックバック

無料ブログはココログ

« Reports Connect for Salesforce 標準画面からの印刷呼び出し方法 | トップページ | Reports Connect for Salesforce 複数の帳票を一つのPDFファイルとして出す »

Reports Connect for Salesforce PDFファイルをオブジェクトに添付する

ReportsConnect 1.8 より、作成したPDFファイルをダウンロードする代わりに、特定のオブジェクトに添付する事が可能になりましたので、その方法について解説します。

ReportsConnect 1.8をインストールしたうえで、ReportsConnectの資料のページから、1.サンプルプログラムのインストールのリンクおよび、2.サンプルデータのダウンロードのリンクをクリックして、サンプルのプログラムとデータをダウンロードしてください。

サンプルプログラムには商談のカスタムボタンが3つ用意されています。
すべての商談を表示すると「帳票テスト商談」がありますのでこれを開きます。

3つのカスタムボタンは、レイアウトを編集するのリンクを押して、レイアウト編集画面のボタンの箇所からドラッグアンドドロップして画面に追加してください。

20130125_16h45_43

このボタンのうち、請求書印刷、見積印刷の2つは、押すとサブウインドウが開いて、PDFファイルのダウンロードとなります。

20130125_16h34_21
このようにカスタムボタンから、PDFファイルをダウンロードする実装に関しては、Reports Connect for Salesforce 標準画面からの印刷呼び出し方法を参考にしてください。

3つ目の商品紹介のボタンが、新機能、PDFファイルをオブジェクトに添付する例となっています。このボタンを押すと、サブウィンドウは表示されず、PDFファイルを該当の商談オブジェクトに添付して再び元の商談の画面に遷移します。

20130125_16h56_10
このように、PDFファイルを特定のオブジェクトに添付する場合、最も簡単な方法は該当の帳票オブジェクの項目「idパラメーターのオブジェクトに添付」にチェックを付ける事です。
20130125_15h50_24
これにより、リクエストパラメーターにidというパラメーターがある場合、その値のidのオブジェクトの添付ファイルとしてPDFファイルが保存されるようになります。
カスタムボタンを押した際に遷移する画面ではidパラメーターに該当のオブジェクトのidが設定されますので、うまい具合にそのオブジェクトに添付することができます。

(ただし、帳票画面の「印刷テスト」ボタンを押した際は、このチェックは自動的にoffになります。これは、帳票オブジェクト自体にPDFが添付されてしまわない様にするため、そのような仕様になっています)

また、添付後、ディフォルトでそのオブジェクトのページのPagereferenceが返されるので、あえてサブウインドウを開く必要はありません。カスタムボタンの動作には、「現在のウィンドウにサイドバー付きで表示」を設定します。

Ws000000
このボタンを押した際に呼び出されるVisualforceページのソースとコントローラーのソースは以下の通りです。

(コントローラーのメソッド、doPrintSsが呼び出される)

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

  <apex:page standardController="Opportunity" 
       extensions="OpportunityPrint" action="{!doPrintSs}">   </apex:page>

  public with sharing class OpportunityPrint {
    private kpsr.ReportsConnectController rc;

    public OpportunityPrint (ApexPages.StandardController controller) {
        rc = new kpsr.ReportsConnectController();
         
    }
   
    public Pagereference doPrintSk(){
        rc.setReportId('請求書');
        return doPrint();
    }

    public Pagereference doPrintMt(){
        rc.setReportId('見積り');
        return doPrint();
    }
   
    public Pagereference doPrintSs(){
        rc.setReportId('商品紹介');
        rc.getParms().put('condition','where ImageUrl__c <> NULL');
        //rc.setReturnUrl('/servlet/servlet.FileDownload');
        rc.goPrint();
        if(rc.goUrl!=null){
            Pagereference pr = new Pagereference(rc.goUrl);
            return pr;
        } else {
            return null;
        }
    }
   
   
    private Pagereference doPrint(){
        rc.getParms().put('condition','where OpportunityId=\''
                + System.currentPageReference()
                   .getParameters().get('id') + '\'');
        rc.goPrint();
        if(rc.goUrl!=null){
            Pagereference pr = new Pagereference(rc.goUrl);
            return pr;
        } else {
            return null;
        }
    }
}
-------------------------

なお、ReportsConnectController#setParentIdメソッドを使用してオブジェクトのidを設定すれば、任意のオブジェクの添付ファイルにすることができます。

また、ReportsConnectController#setReturnUrlメソッドで、遷移先のページを指定することもできます。
その際、リクエストパラメーターfileに、PDFファイルの添付ファイルのオブジェクトのidが返されるので、上記ソースでコメントアウトされている

//rc.setReturnUrl('/servlet/servlet.FileDownload');

の行のコメントアウトを外すと、ダウンロードサーブレットが動いてPDFが表示されますので試してみてください。

« Reports Connect for Salesforce 標準画面からの印刷呼び出し方法 | トップページ | Reports Connect for Salesforce 複数の帳票を一つのPDFファイルとして出す »

Force.com」カテゴリの記事

Reports Connect」カテゴリの記事

Salesforce」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: Reports Connect for Salesforce PDFファイルをオブジェクトに添付する:

« Reports Connect for Salesforce 標準画面からの印刷呼び出し方法 | トップページ | Reports Connect for Salesforce 複数の帳票を一つのPDFファイルとして出す »