表达式测试的妙用——获取多选基础资料的属性值
【场景】
需要获取多选基础资料的属性值拼接到一起,这里以物料为例,获取多选物料的基本单位名称并拼接到一起。
【工具】
json格式化工具:https://www.sojson.com/
【数据准备】
单据里加多选基础资料字段,绑定物料,字段标识为“F_TPQJ_MulBase2”。
添加引用属性基本单位。
【操作步骤】
首先打开表达式测试的功能,给多选基础资料字段录入值。
用map函数获取到这个数据包,复制一下数据包,map(lambda x:x,F_TPQJ_MulBase2)
将步骤1的执行结果放到json格式化工具中去,点击校验/格式化,可以看到多选基础资料字段的数据包结构。
找一下我们要找的这个基本单位,可以看到 基本单位不是最外层的,需要先取它外面的MaterialBase,才能再获取到基本单位。
把这个MaterialBase放进去,又获得了新的数据包。map(lambda x:x.MaterialBase,F_TPQJ_MulBase2)
同样的方法,放到json格式化链接里,进行格式化。
我们发现格式化之后“基本单位”外面还有一层多余的中括号,就需要加个[0]取第一个。
map(lambda x:x.MaterialBase[0],F_TPQJ_MulBase2)
已经可以看到少了一个中括号[]了,下一步就是取基本单位了。
map(lambda x:x.MaterialBase[0].BaseUnitId,F_TPQJ_MulBase2)
可以看到这一步取出来的基本单位已经和一个普通的基础资料的数据包是一样的了,那么我们只需要用基础资料取名称的方式去取值就可以了。map(lambda x:x.MaterialBase[0].BaseUnitId.Name.ToString(),F_TPQJ_MulBase2)
注:
----基础资料A中的基础资料B的编码:基础资料A.基础资料B.Number
----基础资料A中的基础资料B的名称:基础资料A.基础资料B.Name.ToString()
数据已经取出来了,下一步就是通过join函数拼接。
"-".join(map(lambda x:x.MaterialBase[0].BaseUnitId.Name.ToString(),F_TPQJ_MulBase2))
【补充】
可以参考本贴的内容实现获取复杂数据包的值,不仅局限于多选基础资料。
表达式测试的妙用——获取多选基础资料的属性值
本文2024-09-23 04:07:10发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163253.html