​聚合字段实现汇总打印时拼接不同分录文本数据原创
金蝶云社区-谁是我
谁是我
19人赞赏了该文章 230次浏览 未经作者许可,禁止转载编辑于2024年04月03日 10:01:51

聚合字段实现汇总打印时拼接不同分录文本数据

需求说明

发货通知单套打时,按物料编码分组打印,合计发货数量,不同分录行的不同出货仓位,打印时拼接到同一个单元格;

解决方案:

使用套打模板中的聚合字段功能,金蝶云星空202111月后版本支持此功能;

实现方法:

在套打数据界面右侧选择“数据源”→“发货通知→“明细信息”,然后右击,选择“增加实体动态字段”,进入对应界面:

 image.png

上图中:

分组字段标识:

自由指定,数据绑定到文本框或单元格时,动态字段取该标识;

 

分组表达式:

str(FMaterialID.FNumber)

按物料编码分组时指定物料编码;如果有多个分组字段,需要使用连接字符串的方式,连接多个字段;

 

聚合表达式:

" ".join(sorted(set(map(lambda x: x.F_UNW_Text_CW,ActiveObject)),key=lambda x:x))

上式中:

" ".join:用空格符连接队列中的不同行数据

sorted:将队列按key关键字指定的字段排序;如果队列元素是一个集合,可以用x[0]x[1]的方式指定集合中的对应元素;

set:去掉队列中的重复元素;

map:获取数据队列

lambda:指定队列元数据的获取方法

ActiveObject:当前数据表;固定值;

key=lambda x:x:指定sorted方法的排序依据字段

 

参考链接:

https://vip.kingdee.com/article/312998466987182080

 

打印效果:

 image.png

 

补充说明:

1、集合表达式目前无法直接获取仓位名称,所以使用了自定义文本字段F_UNW_Text_CW来记录仓位名称,以方便集合表达式调用;

以下方法均不能用于集合表达式:GETFLEXDETAILVALUE (FStockLocID ,"FF100001",2)FStockLocID.ActiveObject['F100001']['Name'])FlexFormat('FAuxPropId.FF100001','Name','')

2、动态字段

字段F_UNW_Text_CW是聚合字段表达式中需要用到的数据,但是套打模板里面没有直接打印该字段,所有需要通过动态字段标识来引用该字段;

如果不用动态字段,又不想打印被引用的字段,可以将该字段绑定到某一列表进行正常打印,然后将列宽设置为0,这样打印时就不会显示该字段了;

image.png


赞 19