套打 二开数据干预原创
276次浏览
编辑于2023年05月17日 09:07:21
场景:
套打的数据表格已经对单据内的其中一个数据实体进行绑定,但又需要在打印数据上显示其他单据体或者其他单据的数据。
开发案例:
销售出库单的套打上列举出打印时间点时的物料的即时库存数据,并且对原数据分录按出库数量约定的规则进行分割,并且打印页面上合并单元格。
问题点:
因为需要实现合并单元格效果,即“分组管理”,而数据表格的分组字段仅能选中绑定的实体内有限的字段。
提供思想:
在数据表格中数据行的单元格绑定实体内的其他空文本字段,承载所需的数据。
然后在单据插件继承类(AbstractBillPlugIn)的OnPrepareNotePrintData(PreparePrintDataEventArgs e)内数据包进行数据修改。
using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using System; using System.ComponentModel; namespace DGKD.K3.SCM.xxxx.BusPlugIn { public class PrintPreparePackageGoods : AbstractBillPlugIn { public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e) { if (e.NotePrintTplId.Equals("套打标识ID", StringComparison.OrdinalIgnoreCase) && e.DataSourceId.Equals("单据体标识", StringComparison.OrdinalIgnoreCase)) { e.DataObjects[0]["文本字段标识"]="所需数据";//某行数据内的字段修改 //e.DataObjects = new DynamicObject[]; } } } }
e.NotePrintTplId为套打标识ID,用“套打设计器”新建的套打模板可自定义标识ID。
e.DataSourceId为当前单据实体处理标识。OnPrepareNotePrintData会被多次调用,通过DataSourceId判定当前数据包是什么实体数据。
e.DataObjects为当前的DynamicObject[]数据包,内加载字段标识为套打模板内绑定字段,可替换新的同结构数据包。
推荐阅读