通版销售出库汇总报表显示的数据不可能满足所有客户的需求。对于一些不重要的字段一般不显示或只显示名称不显示编码,举个例子,目前版本就不会显示物料分组编码,这种类似于‘物料分组’不重要的属性只需要显示个名称就可以了,没有既显示名称又显示编码的必要,那么如何二开实现显示物料分组编码呢?本文就以二开显示物料分组编码为例,大致说明下步骤,客户可参照此文类似地二开添加其它字段。
一,打开BOSIDE,扩展对应的报表,添加列‘物料分组编码’,其中的标识(F_ora_Text)要对于于报表代码中的列名,如下图1-1所示:
图1-1
再扩展对应的过滤框,显示隐藏列添加对应的列,标识对应于上图的F_ora_Text,如下图1-2所示:
图1-2
二,创建C#4.0类库,继承通版报表插件Kingdee.K3.SCM.App.Sal.Report.SaleOutStockSummaryRpt(此插件定义在程序集Kingdee.K3.SCM.App.Sal.Report.dll),如下图2-1所示:
图2-1
如上图所示重写GetReportData() 方法,其中的自定义方法UpdateTableData()定义如下图2-2:
图2-2
最后,更新报表元数据,启用二开报表插件,禁用或删除通版的插件,如下图3-1所示:
图3-1
显示结果如下图3-2所示(图中的物料分组列是原有存在的,显示为名称,此列经过界面移动到倒数第二列) :
图3-2
总结:首先要说明的是,对于物料分组编码的获取,是依赖于通版已经存在了的物料分组ID(参见图2-2所示的代码段:row["FMATERIALGROUP"]),对于其它通版本来就没有的字段,就得想办法获取了,比如客户分组编码的获取,通版不保存客户分组ID,那么就可以变通处理,先依据客户ID(客户ID在通版报表插件是存在的),在数据库中通过查询客户表得到的客户分组ID(SELECT CG.FNUMBER FROM T_BD_CUSTOMER C LEFT JOIN T_BD_CUSTOMERGROUP CG ON CG.FID = C.FPRIMARYGROUP),再依赖客户分组ID获取客户分组编码。
推荐阅读