多分录打印的实现及需要注意的问题

//              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)的根实体要和主数据源的根实体相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值