58.2、报表插件,报表,增加字段原创
68人赞赏了该文章
2万次浏览
编辑于2021年10月12日 14:21:09
摘要由AI智能服务提供
本文提供了在金蝶K3Cloud标准产品中报表二次开发添加自定义字段的指导方案。客户如需将自定义字段显示在报表中,需通过新建报表服务插件继承标准报表插件,获取并处理报表原始数据,包括关联单据和客户信息,最终在报表中展示这些自定义字段。具体步骤包括新建类库、扩展报表字段、注册插件并修改报表显示设置。文章还提供了代码示例和视频链接以供参考。
背景:
目前标准产品的报表中,显示的字段都是固定的,如果客户做了二次开发,比如在单据中增加了一些自定义字段, 同时想在报表中把这些自定义字段显示出来,这种需求属于特殊需求,标准产品不会处理, 但可以通过二次开发来实现
方案:
新建一个报表服务插件,直接继承K3Cloud的标准报表的服务插件,获取到报表的原始数据,该数据是保存在临时表中 然后我们对此报表的原始数据进行再次加工处理,比如按单据编号或基础资料编号进行关联, 就可以获取到你需要的任何数据
下面以采购订单执行明细表为例,详细说明操作步骤
步骤:
1、打开VS,新建一个类库,具体可以参考4.1 ,1-7步
1.1、在BOSIDE中找到你需要处理的报表,确定其使用的服务插件是什么
Kingdee.K3.SCM.App.Purchase.Report.PurchaseOrderExecuteRpt
类:Kingdee.K3.SCM.App.Purchase.Report
方法:PurchaseOrderExecuteRpt
2. 使用visual studio新建一个类,并继承原报表的类
添加相关引用:
添加using:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Report; using Kingdee.K3.SCM.App.Purchase.Report; using System.ComponentModel;
继承标准产品的报表插件:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Report; using Kingdee.K3.SCM.App.Purchase.Report; using System.ComponentModel; namespace Kingdee.Bos.TableTest { [Description("报表添加字段")] [Kingdee.BOS.Util.HotUpdate] public class ClassName : PurchaseOrderExecuteRpt { private string[] TempTableName; //重写创建临时表方法 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { //创建临时表用于保存自己的数据 IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>(); TempTableName = dbservice.CreateTemporaryTableName(this.Context, 1); string strTable = TempTableName[0]; //调用基类方法,获取初步的查询结果 base.BuilderReportSqlAndTempTable(filter, strTable); //对初步的查询结果处理,然后回填到默认的存放查询结果到临时表 StringBuilder sb = new StringBuilder(); //未扩展之前,数据放在t1 strTable 采购订单执行明细表 //关联订单 left join t_PUR_POOrder t2 ,单据编号 FBILLNO //再关联客户表 left join T_BD_CUSTOMER_L t3 //中文 FLOCALEID=2052 //转换字段 as F_PAEZ_Cust string strSql = @"/*dialect*/select t1.*,t3.FName as F_PAEZ_Cust into {0} from {1} t1 left join t_PUR_POOrder t2 on t1.FBILLNO = t2.FBILLNO left join T_BD_CUSTOMER_L t3 on t2.F_PAEZ_CustId=t3.FCUSTID and t3.FLOCALEID=2052"; sb.AppendFormat(strSql, tableName, strTable); DBUtils.Execute(this.Context, sb.ToString()); } public override void CloseReport() { //删除临时表 if (TempTableName == null || TempTableName.Length == 0) { return; } IDBService dbservice = Kingdee.BOS.App.ServiceHelper.GetService<IDBService>(); dbservice.DeleteTemporaryTableName(this.Context, TempTableName); base.CloseReport(); } } }
注:只需要重载基类的两个方法:
public overridevoidBuilderReportSqlAndTempTable(IRptParams filter,stringtableName)
public overridevoidCloseReport()
3. 在BOSIDE中,对原报表做一下扩展
扩展
添加报表字段
在扩展后的报表元数据中添加字段,注意添加的字段名,需要与代码中的字段名保持一致
3.1、扩展采购订单,放一个基础资料,客户 F_PAEZ_CustId
3.2、采购执行明细表,放一个文本字段 F_PAEZ_Cust
3.3、注册插件
扩展后,添加注册二次开发的插件,并把原报表服务插件取消启用
4. 扩展报表过滤条件
扩展
添加过滤及显示字段
在显示隐藏列中,把二次开发字段加进去
采购订单执行明细表过滤界面,字段集合,添加文本 F_PAEZ_Cust
5、重新打开报表,显示自定义字段 客户
6、如果一张单据有多行分录,默认如下图显示
设置合并字段集合后
视频链接
链接:https://pan.baidu.com/s/1ladJwec2E58HF1Pyj28Azg
提取码:kiss
总目录链接
58.2.zip(15.69KB)
赞 68
68人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读