Python实现套打分列打印以及自定义分页原创
2人赞赏了该文章
2,119次浏览
编辑于2021年08月18日 09:07:35
首先设计套打模板:
1、拖一个数据表格上来,数据表格选择一个实体必须选择
2、在数据表格中的数据行中拖入条码(该实例是分列打印条码),然后右键属性绑定数据源为动态字段
3、选中数据行(注意:是选中整行),右键属性设置每页固定的行数
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()
最终效果:
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读