フォーラムへの返信
-
投稿者投稿
-
sweetie参加者
takakuraさん、こんにちは。
ちょっと状況がわからないのですが、御社環境でライセンス管理が動くというのは御社のライセンスの話ですよね。
顧客環境というのは、その顧客の組織はライセンスを持っているのでしょうか?
ひょっとして、OEMとして御社のライセンスを顧客のユーザーに割り当てるということですか?
sweetie参加者takakuraさん、こんにちは。
お手数をおかけして恐れいります。
「ログインしてください」のメッセージが出るというのは、ライセンス管理のアプリの方ですか?
それとも、ライセンスの変更を行ったユーザーの方ですか?また、お急ぎであれば、ライセンスの設定をこちらで行うことも出来ますので、
その際は、お手数ですが、force1@mail.kpscorp.jp までメールでお問い合わせください。sweetie参加者追加ですが、
試しに単純に
select id,kpsr__batchPassword__c,kpsr__batchUsername__c from kpsr__Report__c
を発行するコードを書いてみて、中身が読めているか確認してみたらどうでしょうか。sweetie参加者正しい帳票オブジェクトを参照しているとしたら、考えられるのはアクセス権限の問題ですかね?
印刷テストでうまくいくのは、呼び出しているクラスがすべて同一パッケージ内にあるものだから動くのかもしれない?先ほど、開発者コンソールのQuery Editorでkpsr__Report__cが読めないという話がありましたが、
当方では以下のSOQLは正常にQuery Editorで答えが返りますselect id,kpsr__batchPassword__c,kpsr__batchUsername__c from kpsr__Report__c
これがエラーの出るユーザーで読めないとしたら、帳票オブジェクトのフィールドの値が読めない事が原因かもしれない。
エラーが出るユーザーのプロファイルからカスタムオブジェクト権限で帳票オブジェクトがアクセス可能か、また、項目レベルセキュリティで帳票オブジェクトのフィールドがアクセス可能か?
そのあたりの問題が考えられると思いますが。sweetie参加者ちなみに、開発者コンソールで実行した際にそこで出力されるlogで
15:23:23:202 SOQL_EXECUTE_BEGIN [278]|Aggregations:0|SELECT id, Name, kpsr__SOQL__c, kpsr__jrxmlname__c, kpsr__filename__c, kpsr__Null2Blank__c, kpsr__attcheToId__c, kpsr__batchUsername__c, kpsr__batchPassword__c, kpsr__nouiMode__c, kpsr__loginFix__c FROM Report__c WHERE (id = :tmpVar1 OR Name = :tmpVar2)
↑こんな感じでReport__c を読んでいるところがあると思いますがその次に
15:23:23:212 SOQL_EXECUTE_END [278]|Rows:1
となっていれば、読んだ帳票オブジェクトは1件しかないですが、
Rowsのあとが2以上ならば複数のオブジェクトを読んでいる事になりますsweetie参加者帳票オブジェクトの画面(印刷テストのボタンがある画面)を開いてその画面のURLを確認してください。
URLの最後が
ReportDev?id=a0W100000094XFl&sfdc.override=1
こんな感じになっていると思いますが
id=のあと &の手前の部分がIDです上記の例だと
a0W100000094XFl
がIDです
sweetie参加者追加ですが、rc.setReportId()は引数にIDを指定することも可能ですから、正しい帳票オブジェクトのIDを指定してやってみてください。
sweetie参加者製品を使用するかどうかは、テストの結果で判断していただければ結構です。
こちらで作成したこのコードでは正常に稼働しているので、エラーが出る場合とどこに相違があるかを確認してもらいたいだけです。また、このフォーラムは、すべての問題の解決を保証するものではありません。
そちらのコードを見ると、rc.setReportId(‘請求書’);と、帳票オブジェクトを名称で指定していますが、請求書という名前のオブジェクトが複数あるということは無いですか?
複数ある場合は、そのうちのどのオブジェクトが選択されるか特定できません。
ユーザーID、パスワードが正しくない指定の同一名のオブジェクトがあるということはありませんか?sweetie参加者当方で、ログインユーザーを固定化する および UIを使用しない にチェックした帳票オブジェクトを使用して以下の様なコードを開発者コンソールの Open Execute Anonymous Windowから実行したところ、正常に稼働していますが。
public class Maint {
public static void goBtcPrint(){
kpsr.ReportsConnectController rc = new kpsr.ReportsConnectController();
rc.setReportId(‘見積り’);
rc.getParms().put(‘condition’,’WHERE Opportunity.OrderNumber__c = \’TST11001\”);
rc.goPrint();
system.debug(rc.batchMessage);}
}sweetie参加者LoginFaultは、前回のようにbatch環境で連続処理を行った場合に発生するのですか、
それとも、単体で行った場合でも、必ず発生するという事ですか?こちらの環境ではこのような現象は再現できないのですが。
sweetie参加者Reportsconnect for salesforceの修正版のダウンロードURLです
https://login.salesforce.com/packaging/installPackage.apexp?p0=04tG0000000MglC
sandbox用はこちら
https://test.salesforce.com/packaging/installPackage.apexp?p0=04tG0000000MglC
お試しください
sweetie参加者ReportsConnectControllerのからのcall outで想定外のcallout exceptionが発生していると思われます。
その際に、メッセージを正確に返せずnull pointer exceptionとなっているようです。想定外のcallout exceptionはそのままthrowするように修正を入れたバージョンをリリースしますので、暫くお待ち下さい。
sweetie参加者ログインユーザー固定化オプションを使用するケースで、1回のバッチ内で複数回PDF作成処理を呼んでいると思いますが、
ReportsconnectControllerは1回のPDFの作成で複数回calloutを行います。現在salesforceのガバナ制限では1回の処理内のcallout回数が100回までとなっています。
1回のバッチ内でのcallout件数の上限を超えてexceptionが内部で発生しているように思われます。
内部のexceptionの扱いでエラーメッセージを出力に問題があって(想定外のexception)null Pointer Exceptionとなっている可能性があります。デバッグログ上のcallout回数を確認してください。
sweetie参加者saitoさん、こんにちは。
複数画像ファイルの対応を行いました。
ファイル添付のフィールドに複数の画像ファイルを添付した場合、それぞれのファイルが filekey/ファイル名 に保管されるようになっています。
iReportの image Expression では、
$F{添付ファイル}.split(“;”)[0]
といった式で配列のインデックスでそれぞれのファイルにアクセスできます。
詳しくは、ブログの記事に追記を行いましたので、そちらを参照してください。
http://kptech.cocolog-nifty.com/blog/2013/11/reports-conne-3.html
sweetie参加者saitoさん、こんにちは。
仰るとおり、現在のRepotsconnect for kintoneでは複数ファイルをアップロードした場合、セミコロン連結の文字列をファイルパスとした位置に添付したファイルのうちの最後のものがアップロードされるようになっているため、動的に複数ファイルのうちから選択的にイメージを表示することが出来ません。
ご指摘のとおり、filekey/ファイル名1 といった指定をimage Expressionするとそれが表示される、という仕様だと応用範囲が広がりそうですね。
むしろその方が仕様としては正しいような気もします。仕様の追加を検討したいと思います。
現在の仕様と互換性等も考える必要があるので、少々時間をください。
-
投稿者投稿