实现数量、单价、金额等数字类型字段格式化为千分位原创
金蝶云社区-苍穹之巅身份
苍穹之巅
23人赞赏了该文章 334次浏览 未经作者许可,禁止转载编辑于2024年02月01日 13:36:45

一、需求背景

实现数字类型字段格式化为千分位,例如1234567,格式化为1,234,567

二、实现方式

例如想在采购订单上将单价格式化为千分位的文本字段



1、在BOS里拖一个文本字段到单据的明细中

image.png

2、在单价字段设置值更新事件,此处使用含税单价来触发计算公式


image.png


3、在值更新事件里,新增服务,选择服务类型“计算定义公式的值并填写到指定列”,设置公式

 F_QTMO_Text_qtr  =((str(FPrice)[(0 if str(FPrice).find('.')<=15 else str(FPrice).find('.')-15):str(FPrice).find('.')-12 ]+',') if str(FPrice).find('.')>=13 else '')+((str(FPrice)[(0 if str(FPrice).find('.')<=12 else str(FPrice).find('.')-12):str(FPrice).find('.')-9 ]+',') if str(FPrice).find('.')>=10 else '') + ((str(FPrice)[(0 if str(FPrice).find('.')<=9 else str(FPrice).find('.')-9):str(FPrice).find('.')-6 ]+',') if str(FPrice).find('.')>=7 else '') +((str(FPrice)[(0 if str(FPrice).find('.')<=6 else str(FPrice).find('.')-6):str(FPrice).find('.')-3 ]+',') if str(FPrice).find('.')>=4 else '')+(str(FPrice)[(0 if str(FPrice).find('.')<=3 else str(FPrice).find('.')-3):str(FPrice).find('.') ])+'.'+str(FPrice)[str(FPrice).find('.')+1:20 ]


如果想去掉小数点后面的零可以使用str.strip( '0' )


 F_QTMO_Text_qtr  =((str(FPrice)[(0 if str(FPrice).find('.')<=15 else str(FPrice).find('.')-15):str(FPrice).find('.')-12 ]+',') if str(FPrice).find('.')>=13 else '')+((str(FPrice)[(0 if str(FPrice).find('.')<=12 else str(FPrice).find('.')-12):str(FPrice).find('.')-9 ]+',') if str(FPrice).find('.')>=10 else '') + ((str(FPrice)[(0 if str(FPrice).find('.')<=9 else str(FPrice).find('.')-9):str(FPrice).find('.')-6 ]+',') if str(FPrice).find('.')>=7 else '') +((str(FPrice)[(0 if str(FPrice).find('.')<=6 else str(FPrice).find('.')-6):str(FPrice).find('.')-3 ]+',') if str(FPrice).find('.')>=4 else '')+(str(FPrice)[(0 if str(FPrice).find('.')<=3 else str(FPrice).find('.')-3):str(FPrice).find('.') ])+('.'+str(FPrice)[str(FPrice).find('.')+1:20 ]).strip( '0' )


image.png

三、效果

在采购订单的录入界面录入含税单价后,系统自动格式化出文本2的千分位格式。

image.png


赞 23