标准报表增加自定义字段原创
金蝶云社区-勤劳的小蜜蜂
勤劳的小蜜蜂
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人打赏
还没有人打赏,快来当第一个打赏的人吧!