ホーム › フォーラム › ReportsConnect for Salesforce › Apexで明細部分を作る方法について
-
投稿者投稿
-
2017年4月21日 11:06 AM #465tazumi参加者
お世話になります。
明細部分について、要件の都合上単純なSOQLではうまくいきそうにないので、
出力したい内容をApexで加工して、その内容で明細を作りたいと考えていますが、このようなことはできるのでしょうか?試してみたこと。
http://kptech.cocolog-nifty.com/blog/2012/11/reports-conne-2.html
の記事を参考にしつつ。
①ApexでJSONを作成してパラメータ渡しにすればできるかとも考えたので、
{
“contactList” : [ {
“report2Name” : “Nedaerk Siddartha”,
“report2Id” : “00328000003zZt3AAE”
}, {
“report2Name” : “Llorrac Jake”,
“report2Id” : “00328000003zZt4AAE”
} ]
}
というjsonの文字列をrc.getParms().put(‘contactList’, jsonString);のようにしてパラメータで渡す。
②ireportでパラメータとして名前「contactList」をObjectとして定義
③Detail部にsubreportを配置し
・Connection type:Use a datasource expression
・Data Source Expression : new JRBeanCollectionDataSource((Collection)$P{contactList})
のようにしてみた。
④結果: Error evaluating expression : Source text : new JRBeanCollectionDataSource((Collection)$P{contactList})
となる。2017年4月21日 11:32 AM #466sweetie参加者tazumiさんこんにちは。
見たところ、jsonで渡しているとはいえ、$P{contactList}はあくまでStringなのでCollectionでキャストしたらエラーになる、ということでは無いかと思われますが、
お尋ねの件は、iReportの技術的な内容と思われるので、iReport系のサイトでご確認頂きたい思います。なお、SOQLで不可能なデータ構造をソースにしたい場合の実現例としては、Salesforce上に印刷用のオブジェクトを用意してApexのロジックでそこに書き込んでReportsconnectにはそのオブジェクトを読ませるという方法で実現してるケースを聞いたことがあります。
P.S.
いただいた質問をヒントに考えて見たのですが、Javaのjsonn系のライブラリでJSONICというのがありますが、サーバー側にこのライブラリーを追加しておけばパラメータをjsonで渡して色々応用が効くかもしれないと思います。
現段階では未追加ですがライブラリー追加を検討してみます。2017年4月21日 11:38 AM #467tazumi参加者回答ありがとうございます。
とりあえず、印刷用オブジェクトに書き込む方針で見当します。2017年6月8日 12:27 PM #509tazumi参加者この件について、解決しました。ありがとうございました。
解決について記述しておきます。ご提案いただいたとおり、帳票出力用のワークオブジェクトを作成してみたのですが、
・Apexでワークオブジェクトにinsert処理をし、その流れのままReportsConnect呼びだし
とすると、「commitしてないからダメ」というエラーで落ちてしまいます。そこで、対処として以下のようにしました。
・Visualforceを2つ用意。ボタン押下時のApex呼び出し用(※1)とコミット後に再度Apex呼び出し用(※2) 。Aoexコントローラは同一のものを指定。
・ボタン押下で※1よりApex起動。Apexコントローラには変数としてユーザIDとボタン押下の時間を結合したもの(※key)を保持。ワークオブジェクトに書き込み。その際※keyもワークオブジェクトに書き込んでおく。returnとして※2を返す。commitされる。
・※2のinitでApexコントローラがつづけて起動される。このとき※key変数はクリアされていないので、ReportsConnectのワークオブジェクトを取得するSOQLのWhereパラメータに※keyを指定する。分かりづらいかもしれませんが、以上となります。
とっても助かりました。ありがとうございました。2017年7月5日 10:43 AM #515sweetie参加者tazumiさん
遅くなりましたが、Reportsconnectでjsonでのパラメータ渡しが可能になりました。
以下の記事を参考にしてください。
http://kptech.cocolog-nifty.com/blog/2017/07/reports-connect.html
-
投稿者投稿
- このトピックに返信するにはログインが必要です。