58.2、报表插件,报表,增加字段原创
金蝶云社区-林荫大道cc
林荫大道cc
57人赞赏了该文章 15251次浏览 未经作者许可,禁止转载编辑于2021年10月12日 14:21:09
封面

参考  报表二次开发添加自定义字段的指导方案 


背景:


    目前标准产品的报表中,显示的字段都是固定的,如果客户做了二次开发,比如在单据中增加了一些自定义字段,
       
    同时想在报表中把这些自定义字段显示出来,这种需求属于特殊需求,标准产品不会处理,
       
    但可以通过二次开发来实现


方案:


       新建一个报表服务插件,直接继承K3Cloud的标准报表的服务插件,获取到报表的原始数据,该数据是保存在临时表中
       
       然后我们对此报表的原始数据进行再次加工处理,比如按单据编号或基础资料编号进行关联,
       
       就可以获取到你需要的任何数据



下面以采购订单执行明细表为例,详细说明操作步骤


步骤:


1、打开VS,新建一个类库,具体可以参考4.1 ,1-7步



1.1、在BOSIDE中找到你需要处理的报表,确定其使用的服务插件是什么


Kingdee.K3.SCM.App.Purchase.Report.PurchaseOrderExecuteRpt


类:Kingdee.K3.SCM.App.Purchase.Report
方法:PurchaseOrderExecuteRpt


image.png



2.     使用visual studio新建一个类,并继承原报表的类


添加相关引用:


image.png


添加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();
        }
    }
}


image.png


注:只需要重载基类的两个方法:


public overridevoidBuilderReportSqlAndTempTable(IRptParams filter,stringtableName)


public overridevoidCloseReport()



3.     在BOSIDE中,对原报表做一下扩展


扩展


0.png


添加报表字段

在扩展后的报表元数据中添加字段,注意添加的字段名,需要与代码中的字段名保持一致



3.1、扩展采购订单,放一个基础资料,客户 F_PAEZ_CustId


image.png



3.2、采购执行明细表,放一个文本字段 F_PAEZ_Cust


image.png


3.3、注册插件

扩展后,添加注册二次开发的插件,并把原报表服务插件取消启用



4.     扩展报表过滤条件


扩展


0.png


添加过滤及显示字段

在显示隐藏列中,把二次开发字段加进去



采购订单执行明细表过滤界面,字段集合,添加文本 F_PAEZ_Cust


image.png


image.png




5、重新打开报表,显示自定义字段 客户



image.png



6、如果一张单据有多行分录,默认如下图显示


image.png


image.png


设置合并字段集合


image.png


image.png


image.png


视频链接

链接:https://pan.baidu.com/s/1ladJwec2E58HF1Pyj28Azg

提取码:kiss 


一些 帐表开发【汇总贴】


账表插件开发小技巧,超详细实现步骤送给你!作者:拿了你的糖


总目录链接

https://vip.kingdee.com/article/64993872014591232

58.2.zip(15.69KB)

赞 57