套打 二开数据干预原创
金蝶云社区-55av5a2Q
55av5a2Q
0人赞赏了该文章 276次浏览 未经作者许可,禁止转载编辑于2023年05月17日 09:07:21

场景:

        套打的数据表格已经对单据内的其中一个数据实体进行绑定,但又需要在打印数据上显示其他单据体或者其他单据的数据。


开发案例:

        销售出库单的套打上列举出打印时间点时的物料的即时库存数据,并且对原数据分录按出库数量约定的规则进行分割,并且打印页面上合并单元格。

image.png


问题点:

        因为需要实现合并单元格效果,即“分组管理”,而数据表格的分组字段仅能选中绑定的实体内有限的字段。


image.png


提供思想:

  1. 在数据表格中数据行的单元格绑定实体内的其他空文本字段,承载所需的数据。

  2. 然后在单据插件继承类(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[]数据包,内加载字段标识为套打模板内绑定字段,可替换新的同结构数据包。

赞 0