【解决问题】应付单单据头新增二开字段,由收票信息页签的多行收票单信息的发票号码拼接组成原创
金蝶云社区-云社区用户86168047
云社区用户86168047
50人赞赏了该文章 904次浏览 未经作者许可,禁止转载编辑于2023年08月03日 15:15:42


问题:现状

 image.png

 image.png

 

希望实现的效果

 

 image.png

 

实体服务规则常见报错

常见错误1:

实体服务规则[发票号码取值]发生异常:
异常信息如下:[表达式计算出错: F_RDYY_Text  = "+".join(map(lambda x:x.FRecInv.FIVNUMBER,FRecInvInfo)) ( BOSDynamicRow is not iterable ) 
 BOSDynamicRow is not iterable
 服务:[计算定义公式的值并填写到指定列] ]   前往金蝶云社区获取更多帮助

 

常见错误2:

 image.png

 

解决方案

实体服务规则的配置位置:

单据体的实体服务规则,是一行一行计算的,汇总整个实体,需要写在实体父项上,如果是汇总单据体的话,对应的就是单据头

 image.png

前置条件

image.png

FRecInv  <> null  AND  FRecInvInfo <> null

实体服务规则公式配置

 image.png

 

F_RDYY_Text  = "+".join(map(lambda x:x.FRecInv.FIVNUMBER,filter(lambda x:x.FRecInv<>null,FRecInvInfo))

 

 

 

相关操作说明

拼接遍历

FCausa = '\n'.join(o for o in (set(map(lambda x:(format(x.FRemark)), FEntity))))

①FCausa :单据头事由字段的标识;②‘\n’:自动换行符;③.join:拼接;④ o for o in 固定写法;⑤ set:去重; ⑥map:映射;⑦lambda:遍历;⑧format:格式化字符串;⑨FRemark :单据体备注字段的标识;⑩ FEntity:费用报销单的明细单据体的标识

语句大意:先使用format函数对先对FRemark做格式化操作,得到纯文本。再使用lambda函数对FEntity单据体做遍历操作,再使用map函数,将格式化后的字符串从明细行映射挑选出来,组成一个新的集合;再使用set函数,对集合里的元素做去重操作,去重后按照原有的顺序组成新的集合。最后使用join函数对集合里面的元素,使用自动换行符'\n'做拼接操作,得到的字符串赋值给FCausa字段。

遍历语句注意事项

适用范围

1.支持单据头实体服务规则

2.支持表单服务策略与校验规则

3.不支持单据体实体服务规则

4.不支持字段值更新事件


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