标准报表增加自定义字段原创
27人赞赏了该文章
6,345次浏览
编辑于2019年08月09日 21:43:25
我以应收账款汇总表增加客户简称字段为例 字段标识F_cshortname,文本类型;注:应收汇总表中添加字段必先在明细表中添加字段,然后在汇总表中添加 第一步: 在应收账款明细表中增加字段F_cshortname 第二步:在明细表中过滤界面添加简称字段F_cshortname,文本类型; 第三步:新建工程进行代码编写 代码编写要点 1:继承所修改报表的基类 2:重写报表BuilderReportSqlAndTempTable、CloseReport这两个方法 本案例代码: using Kingdee.BOS.App; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Util; using Kingdee.K3.FIN.AR.App.Report; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ZT.K3Cloud.FIN.AR.APP.Plugin { [Description("应收明细:增加简称字段")] [Kingdee.BOS.Util.HotUpdate] public class AddFieldDetail : ARDetailReportService //-->该报表服务器插件中的类Kingdee.K3.FIN.AR.App.Report.ARDetailReportService { private String[] customRptTempTableNames; public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { IDBService dBService = ServiceHelper.GetService<IDBService>(); customRptTempTableNames = dBService.CreateTemporaryTableName(this.Context, 1); String strTable = customRptTempTableNames[0]; base.BuilderReportSqlAndTempTable(filter, strTable); //对初步的查询结果进行处理,然后写回基类默认的存放查询结果的临时表 StringBuilder sb = new StringBuilder(); string strSql = "/*dialect*/select t1.*, a3.FSHORTNAME F_cshortname into {0} FROM {1} t1 left join T_BD_CUSTOMER_L a3 on" + " t1.fcustid = a3.fcustid"; //sql拼接注解:T_BD_CUSTOMER_L 客户名称表 FSHORTNAME 客户简称字段 //这里可以断点调试去找这两张表单的关联关系 sb.AppendFormat(strSql, tableName, strTable); DBUtils.Execute(this.Context, sb.ToString()); } //public override ReportHeader GetReportHeaders(IRptParams filter) //{ // ReportHeader header = base.GetReportHeaders(filter); // // TODO: 添加新增字段 // header.AddChild("F_cshortname", new LocaleValue("简称")); // return header; //} public override void CloseReport() { //删除临时表 if (customRptTempTableNames.IsNullOrEmptyOrWhiteSpace()) { return; } IDBService dbService = Kingdee.BOS.App.ServiceHelper.GetService<Kingdee.BOS.Contracts.IDBService>(); dbService.DeleteTemporaryTableName(this.Context, customRptTempTableNames); base.CloseReport(); } } } 第四步:挂载插件:服务器插件 要点:取消原有的插件、挂载新编写的插件 第五步:在应收汇总中同样写一个类:方法步骤与明细表中一样 |
赞 27
27人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!