分享二开如何基于标准报表去扩展增加字段
金蝶云社区-天冥异
天冥异
8人赞赏了该文章 2505次浏览 未经作者许可,禁止转载编辑于2018年07月27日 11:44:33

1、打开设计器,找到对应报表表单,看看服务器插件是哪一个组件
2、编写客户自己的服务器插件,继承自1中的服务器插件
3、override重写BuilderReportSqlAndTempTable方法,基于之前的tablename查询关联查询自己添加的字段,并最终将数据更新到tablename中,例如: 


  1. public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)


  2. {

  3. string tablenameExt = GetTableName();

  4.             base.BuilderReportSqlAndTempTable(filter, tablenameExt);

  5. // TODO:关联查询,并将结果更新到tablename表,以下仅供参考

  6.             string strSql = string.Format("select A.*,b.FUnitId  into {0} from {1} as A left join T_SAL_ORDERENTRY b on  a.fentryid=b.fentryid", tableName, tablenameExt);

  7.             DBUtils.Execute(this.Context, strSql);

  8.             string droptable = "drop table " + tablenameExt;

  9.             DBUtils.Execute(this.Context, droptable);


  10. }




复制代码


4、override重写GetReportHeaders方法 





  1. public override ReportHeader GetReportHeaders(IRptParams filter)


  2. {


  3. ReportHeader header = base.GetReportHeaders(filter);


  4. // TODO: 添加新增字段


  5. }




复制代码



5、最关键的一步,修改1中的插件列表,取消标准插件,然后注册二开插件。





  • 6、完毕,可以测试了。

备注:


5.0的基类里已经没有GetReportHeaders方法了,现在用哪个?


我改的报表是应收票据余额表,插件继承Kingdee.BOS.Contracts.Report.SysReportBaseService



赞 8