Python实现套打分列打印以及自定义分页原创
金蝶云社区-_空白_
_空白_
2人赞赏了该文章 2,119次浏览 未经作者许可,禁止转载编辑于2021年08月18日 09:07:35

首先设计套打模板:

1、拖一个数据表格上来,数据表格选择一个实体必须选择

图片1.png

2、在数据表格中的数据行中拖入条码(该实例是分列打印条码),然后右键属性绑定数据源为动态字段

图片2.png

3、选中数据行(注意:是选中整行),右键属性设置每页固定的行数

图片3.png

4、给该单据挂套打插件,实例代码如下:

clr.AddReference("System")
clr.AddReference("Kingdee.BOS.ServiceHelper")
clr.AddReference("Kingdee.BOS.DataEntity")
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.Log import *
import System.Type

def OnPrepareNotePrintData(e):
    # 这个BarCode0是在套打模板中设置的动态字段的名称
    if e.Fields is not None and ( "BarCode0" in list(e.Fields)):
        src_Data = e.DataObjects[0]
        resultDatas = List[DynamicObject]()
        # 模拟从某些其他相关单据上获取字段
        barCode_Data = [str(i) for i in range(102010,102025)]
        # 套打模板列数
        col_Num = 2
        # 套打模板行数
        row_Num = 6
        dt = src_Data.DynamicObjectType
        attr1 = SimplePropertyAttribute()
        attr2 = SimplePropertyAttribute()
        attr1.Alias = "BarCode0"
        attr2.Alias = "BarCode1"
        dt.RegisterSimpleProperty("BarCode0",object,None,False,attr1)
        dt.RegisterSimpleProperty("BarCode1",object,None,False,attr2)
        # 分页后的页数
        page_Num =  int(len(barCode_Data)/(col_Num*row_Num)) + (1 if len(barCode_Data)%(col_Num*row_Num)>0 else 0)
        for i in range(page_Num):
            # 获取每页的数据
            datas = list( barCode_Data[i*col_Num*row_Num:(i+1)*col_Num*row_Num])
            j = 0
            for j in range(row_Num):
                obj = DynamicObject(dt)
                for p in list(src_Data.DynamicObjectType.Properties):
                    obj[p] = src_Data[p]
                obj["BarCode0"] = datas[j];
                if j + row_Num <len(datas):
                    obj["BarCode1"] = datas[j+row_Num]
                resultDatas.Add(obj)
                if j+1 >= len(datas):
                    break
                j+=1
        # 将构建好的数据包塞给这个,根据设置的每页固定的行数会自动分页
        e.DataObjects = resultDatas.ToArray()

最终效果:

Image_20210816161647.png


图标赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!