BOS公式编辑器【常用语法汇总】原创
金蝶云社区-Joysing
Joysing
39人赞赏了该文章 4,461次浏览 未经作者许可,禁止转载编辑于2022年07月29日 11:54:54
summary-icon摘要由AI智能服务提供

文本介绍了单据公式编辑器的多个用法,包括字符串截取、if判断条件、数字取整与保留小数、给基础资料字段赋值以及判断物料辅助属性是否启用。其中,字符串截取通过[:]运算符实现,if判断条件可嵌套使用,数字取整和保留小数有详细的语法和示例,基础资料赋值则借助GETPKVALUE函数实现,而辅助属性启用判断则通过特定条件实现。

持续记录中……

小伙伴们遇到想要实现的更多用法时,可以评论一起交流

一、单据公式编辑器

1、字符串截取

可以通过运算符 [:] 来截取字符串

场景:可以判断物料编码的开头是什么

语法:[从哪一位开始(包含):从哪一位结束(不包含)]

如:现有字符串 kingdee ,内存中,k是第0位,它们在内存中的位置如下:

k  i  n  g  d  e  e

0 1  2  3  4  5  6

"kingdee"[0:2]  结果为  ki  (包含第0位,不包含第2位)

"kingdee"[1:4]  结果为  ing(包含第1位,不包含第4位)

如判断物料FMaterialId的编码的前两位是不是01开头,则可以写为:FMaterialId.FNumber[0:2]

2、if 判断条件(可嵌套使用)

语法1:条件成立值 if(判断条件) else 条件不成立值

语法2:[条件不成立值,条件成立值][判断条件]

示例:在给数量FQty字段赋值时,如果物料FMaterialId的编码是01开头,则另数量=50,否则数量=100

示例的写法为:

写法1:FQty=50 if (FMaterialId.FNumber[0:2]=='01') else 100

写法2:FQty=[100,50][FMaterialId.FNumber[0:2]=='01']

参考:【bos小技巧】if用在带有条件的字段映射 (kingdee.com) 感谢:


3、数字取整,或保留多少位小数

向下取整(得到一个最大的,且小于等于它自己的,称为向下取整)

语法:int(小数)

示例:小数75.123,int(75.123)结果为75

向下保留2位小数

语法:int(小数 * 100) / 100。如果保留3位,则*1000,以此类推

示例:小数75.12345,int(75.12345*100)/100结果为75.12

向上取整(得到一个最小的,且大于等于它自己的,称为向上取整)


相比于上面的【向下取整】,75.123应该得到76就对了,那是不是结果加一就行了呢,并不是,因为如果刚好那个数是整数,比如85,向上取整的结果应该是85,不该加一,所以需要判断是否含小数。

语法:int(小数) + [1,0][int(小数)==小数]。后面的条件判断,int(小数)如果等于它自己,那就说明没有小数,不需要加1,应该加0。

示例:小数85.123,int(85.123)+[1,0][int(85.123)==85.123]结果为86

示例:小数85,int(85)+[1,0][int(85)==85]结果为85

向上保留2位小数


语法:(int(小数 * 100) + [1,0][int(小数 * 100)==小数 * 100) / 100。如果保留3位,则*1000,以此类推

示例:小数75.12345,(int(75.12345*100)+1)/100结果为75.13

示例:小数75.12000,(int(75.12000*100)+0)/100结果为75.12


4、给基础资料字段赋值

经常要给基础资料、辅助资料字段赋值。

配合一个新函数“获取基础资料内码”,可以实现快速配置赋值,不再需要后台查询主键内码赋值。

例如,希望采购部门字段赋值为销售部(编码为BM000013),使用函数GETPKVALUE就,传入基础资料的编码条件,使用等于方式匹配,返回对应基础资料内码给字段赋值。

函数GETPKVALUE——依据基础资料的编码查询返回内码给基础资料字段赋值;
本函数有2个入参:目标字段、匹配值。匹配值可以传入常量或字段标识。
例如:传入供应商的编码查询,给供应商字段赋值。
方式一,取常量查询格式:FSupplierId=GETPKVALUE('FSupplierId','LHSY01');
方式二,取文本字段查询格式:FSupplierId=GETPKVALUE('FSupplierId',field.fname),
取字段标识不需要单引号。

函数GETPKVALUE只有大于等于7.7.0.202106版本才能使用

参考:BOS设计器的公式编辑器增加“表达式测试”功能 (kingdee.com) 感谢官方


5、判断物料的某个辅助属性是否启用

FMaterialID !=null and  len(filter(lambda x:x.IsEnable1==true and x.AuxPropertyId_Id=100002, FMaterialID.MaterialAuxPty))>0

满足条件则为已启用,AuxPropertyId_Id是辅助属性ID

image.png


二、单据转换-选单策略公式编辑器

无正文

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

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0