套打.动态字段.核算维度,针对某个维度不打印
【场景】
套打核算维度,针对某个维度不打印
【效果】
过滤掉费用项目维度不进行打印(支持的补丁版本:20210513 PT-146876 [7.6.0.202105])
备注:如果不了解怎么配置核算维度组合值的显示样式,参照 套打实体动态字段,常用表达式,搜索 弹性域字段格式化函数FlexFormat
【实现细则】
(a)FlexFormat:
使用核算维度格式化,得到各维度的类型Type——类型(核算维度用),假设得到结果 类型1:编码1,名称1/类型2:编码2,名称2。
(b)拆分split:
针对核算维度格式化的值,按照维度进行拆分(要求维度分隔符在其他内容中不包含此字符),拆分后得到各维度的单个值原表。
(c)过滤filter(x: (x.find()<0), array):
根据各维度值判断其类型,如果字符串中包含类型的名称,那么就认为是需要过滤的类型。
(d)拼接join(array):
将集合结果拼接得到一个字符串显示输出。
最终表达式:
"/".join(filter(lambda x:(x.find('费用项目')<0),FlexFormat('FDetailID','Type:Code,Name','/')[0].GetString(2052).split('/')))
【备注】
格式化分隔符必须在内容中不存在,同时拆分符与分隔符一致
【进阶】
(1)兼容核算维度为空的场景,输出空
'' if FDetailID==0 else "/".join(filter(lambda x:(x.find('费用项目')<0),FlexFormat('FDetailID','Type:Code,Name','/')[0].GetString(2052).split('/')))
(2)由于利用了维度类型过滤,但是最终不需要显示类型,可以使用字符串截断
'' if FDetailID==0 else "/".join(map(lambda x:(x[x.find(':')+1:] if (x.find(':')>0) else x), filter(lambda x:(x.find('费用项目')<0),FlexFormat('FDetailID','Type:Code,Name','/')[0].GetString(2052).split('/'))))
套打.动态字段.核算维度,针对某个维度不打印
本文2024-09-23 04:12:54发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163862.html