ホーム › フォーラム › ReportsConnect for Salesforce › バッチ実行時goPrint()でSystem.NullPointerExceptioが発生する
-
投稿者投稿
-
2015年11月13日 1:48 PM #285sys-act.com参加者
query editorでselect id,name from kpsr__Report__cと指定するとsObject type ‘kpsr__Report__c’ is not supported.と出力されるのですが、帳票オブジェクトのIDを取得するのはどうすればよろしでしょうか。
2015年11月13日 3:20 PM #286sweetie参加者帳票オブジェクトの画面(印刷テストのボタンがある画面)を開いてその画面のURLを確認してください。
URLの最後が
ReportDev?id=a0W100000094XFl&sfdc.override=1
こんな感じになっていると思いますが
id=のあと &の手前の部分がIDです上記の例だと
a0W100000094XFl
がIDです
2015年11月13日 3:27 PM #287sweetie参加者ちなみに、開発者コンソールで実行した際にそこで出力される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以上ならば複数のオブジェクトを読んでいる事になります2015年11月13日 3:47 PM #288sys-act.com参加者指示通りにテストを実行したところ、LoginFaultが発生しました。
エビデンスとして、コード、ログ、画面キャプチャーを添付します。
public class Maint {
public static void goBtcPrint(){
String soql = ‘SELECT Name FROM Bill_c lmit 1’;
Bill__c b = [select id, name from bill__c limit 1];
kpsr.ReportsConnectController rc = new kpsr.ReportsConnectController();
rc.setReportId(‘a0CO000000C57Eh’);
rc.setSoql(soql);
system.debug(logginglevel.INFO, soql);
rc.setAttcheToId(true);
rc.setParentId(b.Id);
rc.setFileName(b.Name);
rc.goPrint();
system.debug(logginglevel.INFO, rc.batchMessage);
kpsr.BatchPrintResult res = (kpsr.BatchPrintResult) JSON.deserialize(rc.batchMessage,kpsr.BatchPrintResult.class);
}
}35.0 APEX_CODE,INFO;APEX_PROFILING,ERROR;CALLOUT,INFO;DB,ERROR;SYSTEM,FINEST;VALIDATION,ERROR;VISUALFORCE,ERROR;WORKFLOW,ERROR
Execute Anonymous: Maint.goBtcPrint();
15:29:18.155 (155016303)|EXECUTION_STARTED
15:29:18.155 (155025688)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
15:29:18.155 (155387399)|SYSTEM_MODE_ENTER|false
15:29:18.161 (161498252)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903353627)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903408536)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903567918)|SYSTEM_METHOD_ENTRY|[8]|System.debug(APEX_OBJECT, ANY)
15:29:18.903 (903597328)|USER_DEBUG|[8]|INFO|SELECT Name FROM Bill_c lmit 1
15:29:18.903 (903604845)|SYSTEM_METHOD_EXIT|[8]|System.debug(APEX_OBJECT, ANY)
15:29:18.903 (903627542)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903704704)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903786665)|ENTERING_MANAGED_PKG|kpsr
15:29:18.903 (903848264)|ENTERING_MANAGED_PKG|kpsr
15:29:21.108 (3108581996)|SYSTEM_METHOD_ENTRY|[13]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:29:21.108 (3108599729)|ENTERING_MANAGED_PKG|kpsr
15:29:21.108 (3108627902)|SYSTEM_METHOD_EXIT|[13]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:29:21.108 (3108648660)|SYSTEM_METHOD_ENTRY|[13]|System.debug(APEX_OBJECT, ANY)
15:29:21.108 (3108665457)|USER_DEBUG|[13]|INFO|{“id”:null,”message”:”[LoginFault [ApiFault exceptionCode=’INVALID_LOGIN’\n exceptionMessage=’Invalid username, password, security token; or user locked out.’\n]\n]\n:null”,”tag”:”kps-reportsconnect”,”filename”:”201509-00000001.pdf”,”parentid”:”a0DO0000007jaKOMAY”,”success”:false}
15:29:21.108 (3108672863)|SYSTEM_METHOD_EXIT|[13]|System.debug(APEX_OBJECT, ANY)
15:29:21.108 (3108683321)|SYSTEM_METHOD_ENTRY|[14]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:29:21.108 (3108689206)|ENTERING_MANAGED_PKG|kpsr
15:29:21.108 (3108702324)|SYSTEM_METHOD_EXIT|[14]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:29:21.109 (3109025911)|SYSTEM_METHOD_ENTRY|[14]|System.JSON.deserialize(String, System.Type)
15:29:21.109 (3109438542)|SYSTEM_METHOD_EXIT|[14]|System.JSON.deserialize(String, System.Type)
15:29:21.109 (3109460430)|SYSTEM_MODE_EXIT|false
15:29:21.109 (3109511282)|CODE_UNIT_FINISHED|execute_anonymous_apex
15:29:21.111 (3111750313)|EXECUTION_FINISHEDAttachments:
You must be logged in to view attached files.2015年11月13日 3:59 PM #290sys-act.com参加者ログにDBの情報取得を追加した再テストしました。
35.0 APEX_CODE,INFO;APEX_PROFILING,ERROR;CALLOUT,INFO;DB,INFO;SYSTEM,FINEST;VALIDATION,ERROR;VISUALFORCE,ERROR;WORKFLOW,ERROR
Execute Anonymous: Maint.goBtcPrint();
15:56:48.094 (94768427)|EXECUTION_STARTED
15:56:48.094 (94776395)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
15:56:48.095 (95163090)|SYSTEM_MODE_ENTER|false
15:56:48.096 (96845581)|SOQL_EXECUTE_BEGIN|[4]|Aggregations:0|SELECT id, name FROM bill__c LIMIT 1
15:56:48.099 (99113179)|SOQL_EXECUTE_END|[4]|Rows:1
15:56:48.103 (103540216)|ENTERING_MANAGED_PKG|kpsr
15:56:48.832 (832547487)|SOQL_EXECUTE_BEGIN|[117]|Aggregations:0|SELECT Profile.PermissionsManageUsers FROM User WHERE id = :tmpVar1
15:56:48.842 (842905542)|SOQL_EXECUTE_END|[117]|Rows:1
15:56:48.843 (843312104)|ENTERING_MANAGED_PKG|kpsr
15:56:48.843 (843395959)|ENTERING_MANAGED_PKG|kpsr
15:56:48.843 (843581077)|SYSTEM_METHOD_ENTRY|[8]|System.debug(APEX_OBJECT, ANY)
15:56:48.843 (843609754)|USER_DEBUG|[8]|INFO|SELECT Name FROM Bill_c lmit 1
15:56:48.843 (843617511)|SYSTEM_METHOD_EXIT|[8]|System.debug(APEX_OBJECT, ANY)
15:56:48.843 (843658259)|ENTERING_MANAGED_PKG|kpsr
15:56:48.843 (843771837)|ENTERING_MANAGED_PKG|kpsr
15:56:48.843 (843860933)|ENTERING_MANAGED_PKG|kpsr
15:56:48.843 (843923195)|ENTERING_MANAGED_PKG|kpsr
15:56:48.844 (844669305)|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)
15:56:48.852 (852877737)|SOQL_EXECUTE_END|[278]|Rows:1
15:56:48.854 (854015332)|SOQL_EXECUTE_BEGIN|[317]|Aggregations:0|SELECT id, Name, kpsr__SOQL__c, kpsr__jrxmlname__c, kpsr__filename__c, kpsr__Null2Blank__c, kpsr__attcheToId__c, kpsr__serial__c, kpsr__batchUsername__c, kpsr__batchPassword__c, kpsr__nouiMode__c, kpsr__loginFix__c FROM Report__c WHERE Report__c = :tmpVar1 ORDER BY serial__c ASC NULLS FIRST
15:56:48.859 (859917026)|SOQL_EXECUTE_END|[317]|Rows:0
15:56:48.860 (860949132)|SOQL_EXECUTE_BEGIN|[451]|Aggregations:0|SELECT name, body, BodyLength FROM attachment WHERE parentId = :tmpVar1
15:56:48.911 (911945424)|SOQL_EXECUTE_END|[451]|Rows:3
15:56:48.919 (919792629)|SOQL_EXECUTE_BEGIN|[400]|Aggregations:0|SELECT id FROM Report__c WHERE adminrecord__c = TRUE
15:56:48.923 (923140636)|SOQL_EXECUTE_END|[400]|Rows:0
15:56:48.923 (923465526)|SOQL_EXECUTE_BEGIN|[401]|Aggregations:0|SELECT name, body, BodyLength FROM attachment WHERE parentId IN :tmpVar1
15:56:48.925 (925291635)|SOQL_EXECUTE_END|[401]|Rows:0
15:56:51.699 (3699612638)|SYSTEM_METHOD_ENTRY|[13]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:56:51.699 (3699624435)|ENTERING_MANAGED_PKG|kpsr
15:56:51.699 (3699667858)|SYSTEM_METHOD_EXIT|[13]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:56:51.699 (3699686873)|SYSTEM_METHOD_ENTRY|[13]|System.debug(APEX_OBJECT, ANY)
15:56:51.699 (3699699019)|USER_DEBUG|[13]|INFO|{“id”:null,”message”:”[LoginFault [ApiFault exceptionCode=’INVALID_LOGIN’\n exceptionMessage=’Invalid username, password, security token; or user locked out.’\n]\n]\n:null”,”tag”:”kps-reportsconnect”,”filename”:”201509-00000001.pdf”,”parentid”:”a0DO0000007jaKOMAY”,”success”:false}
15:56:51.699 (3699706031)|SYSTEM_METHOD_EXIT|[13]|System.debug(APEX_OBJECT, ANY)
15:56:51.699 (3699716578)|SYSTEM_METHOD_ENTRY|[14]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:56:51.699 (3699723599)|ENTERING_MANAGED_PKG|kpsr
15:56:51.699 (3699737674)|SYSTEM_METHOD_EXIT|[14]|kpsr.ReportsConnectController.__sfdc_batchMessage()
15:56:51.701 (3701080109)|SYSTEM_METHOD_ENTRY|[14]|System.JSON.deserialize(String, System.Type)
15:56:51.701 (3701459358)|SYSTEM_METHOD_EXIT|[14]|System.JSON.deserialize(String, System.Type)
15:56:51.701 (3701480452)|SYSTEM_MODE_EXIT|false
15:56:51.701 (3701532484)|CODE_UNIT_FINISHED|execute_anonymous_apex
15:56:51.703 (3703254246)|EXECUTION_FINISHED2015年11月13日 4:05 PM #291sys-act.com参加者もう一つエビデンスとして画面のキャプチャーを添付します。
定義している帳票は、「請求書」と「aaa」の2つです。Attachments:
You must be logged in to view attached files.2015年11月13日 5:13 PM #293sweetie参加者正しい帳票オブジェクトを参照しているとしたら、考えられるのはアクセス権限の問題ですかね?
印刷テストでうまくいくのは、呼び出しているクラスがすべて同一パッケージ内にあるものだから動くのかもしれない?先ほど、開発者コンソールのQuery Editorでkpsr__Report__cが読めないという話がありましたが、
当方では以下のSOQLは正常にQuery Editorで答えが返りますselect id,kpsr__batchPassword__c,kpsr__batchUsername__c from kpsr__Report__c
これがエラーの出るユーザーで読めないとしたら、帳票オブジェクトのフィールドの値が読めない事が原因かもしれない。
エラーが出るユーザーのプロファイルからカスタムオブジェクト権限で帳票オブジェクトがアクセス可能か、また、項目レベルセキュリティで帳票オブジェクトのフィールドがアクセス可能か?
そのあたりの問題が考えられると思いますが。2015年11月13日 5:28 PM #294sweetie参加者追加ですが、
試しに単純に
select id,kpsr__batchPassword__c,kpsr__batchUsername__c from kpsr__Report__c
を発行するコードを書いてみて、中身が読めているか確認してみたらどうでしょうか。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。