多分錄列印的實現及需要注意的問題

來源:互聯網
上載者:User

//              1、單據ID或選中的一批單據ID的集合

                   Set dataIds = new HashSet();//null改成有意義的單據ID集合。

                   dataIds.add(editData.getString("id"));

//              2、主要資料源(單據)的預設中繼資料PK 

                   IMetaDataPK billPk = MetaDataPKFactory.getMetaDataPK("com.kingdee.eas.hrp.hrbill.app.PayRequestQuery"); 

                   

//              3、構造資料提供者預設實現。如果是單資料來源,到這裡,省去4、5,直接到6。

                   DefaultNoteDataProvider dataProvider = new DefaultNoteDataProvider(dataIds, billPk); 

                   

//              4-1、給主要資料源指定預設的中繼資料和過濾器

                   

                   String mainDsName = "PayRequestQuery";//模板中定義的資料來源名稱

                   dataProvider.addMetaDataPK(mainDsName, billPk); 

                   dataProvider.addCustomFilterMaker(mainDsName,  

                   new DefaultNoteDataProvider.DefaultIdFilterMaker(dataIds));

                   

//              4-2、給從資料來源(比如審批)指定預設的中繼資料和自訂過濾器

                   String approveDsName = "PayrequestPaymentQuery";//模板中定義的資料來源名稱

                   IMetaDataPK approvePk = MetaDataPKFactory.getMetaDataPK( 

                   "com.kingdee.eas.hrp.hrbill.app.PayrequestPaymentQuery"); 

                   dataProvider.addMetaDataPK(approveDsName, approvePk); 

                   dataProvider.addForeignKey(approveDsName, "id"); 

                   

                   dataProvider.addCustomFilterMaker(approveDsName,  

                            new DefaultNoteDataProvider.ICustomFilterMaker() 

                            { 

                                     public void customize(FilterInfo filter, R1PrintDataParameter[] params) 

                                     { 

                                               //filter.getFilterItems().add(new FilterItemInfo("PaymentBillEntry.projectCode", "", CompareType.NOTEQUALS));      

                                     }

 

                            }); 

                   

//              也可以作為代理將任務轉給另一個取數實現,但這樣做不了批量取數。

                   //dataProvider.addProxyTarget("MultiApproveViewQuery", anotherDataProvider); 

 

//              5、設定批量取從資料來源,原來100張單101次RPC,可減為2次。

                   dataProvider.setBatchSupported(true); 

                   dataProvider.setNumberOfEachBatch(100); 

 

                   

//              6、調用套打,其中“/Xx/Bill”改成套打管理中模板所在路徑

                   KDNoteHelper helper = new KDNoteHelper(); 

                   helper.printPreview(getTDFileName(), dataProvider, this); 

 

 

 

         注意:從資料來源(所建的QUERY)的根實體要和主要資料源的根實體相同。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.