公式概览
本文为你列举了目前宜搭已经支持的所有公式。
文本函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
使用该函数,可以获取数据集中指定第几个数的值。 | ✅ | ❌ | ❌ | |
使用该函数,可以将多个文本字符串合并成一个文本字符串。 | ✅ | ❌ | ❌ | |
使用该函数,可以从一个文本字符串的第一个字符开始返回指定个数的字符,如果文本长度小于自定字符个数,就将原始文本返回。 | ✅ | ✅ | ✅ | |
从一个文本字符串的最后一个字符开始返回指定个数的字符。 | ✅ | ✅ | ✅ | |
使用该函数,可以获取文本字符串中的字符个数。 | ✅ | ❌ | ❌ | |
将一个文本中的所有大写字母转换为小写字母。 | ✅ | ✅ | ✅ | |
将一个文本字符串中的所有小写字母转换为大写字母。 | ✅ | ✅ | ✅ | |
返回文本中从指定位置开始的指定个数的字符。 | ✅ | ✅ | ✅ | |
返回字符串中的每个汉字首字母,首字母为大写字母。 | ✅ | ❌ | ❌ | |
根据指定的字符数,将部分文本字符串替换为不同的文本字符串。 | ✅ | ✅ | ✅ | |
可以将文本重复一定次数。 | ✅ | ❌ | ❌ | |
将数字格式化为人民币格式。 | ✅ | ❌ | ❌ | |
获取文本1在文本2中的开始位置。 | ✅ | ✅类似POS | ✅类似POS | |
将文本按指定分割符分割成数组,需配合ARRAYGET来获取指定位置字符。 | ✅ | ❌ | ❌ | |
格式化成文本。 | ✅ | ❌ | ❌ | |
删除字符串首尾的空格,但是会保留字符串内部作为词与词之间分隔的空格。 | ✅ | ❌ | ❌ | |
生成唯一字符串赋值给单行输入框。 | ✅ | ❌ | ❌ | |
将文本转换成数字。通常是用作数据已经录入需要变通计算的场景。 | ✅ | ✅类似VAL | ✅类似VAL | |
该公式用于将文本类型的数字,转换成数值类型。 | ❌ | ✅ | ❌ | |
去掉<字段>左边的空格后返回 | ❌ | ✅ | ✅ | |
去掉<字段>右边的空格后返回 | ❌ | ✅ | ✅ | |
公式会将多个字段连接为一个字符串 | ❌ | ✅ | ✅ | |
公式会将一个字符串按照“分隔字符”将其分为N个子串(N等于分隔字符的数量+1) | ❌ | ✅ | ✅ | |
数值类型的数据转换成字符串 | ❌ | ✅ | ✅ |
时间函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
计算日期区间选择框组件中的,开始和结束日期的相隔天数。 | ✅ | ❌ | ❌ | |
返回日期区间2个日期的天数。 | ✅ | ❌ | ❌ | |
将时间戳转换为日期对象。 | ✅ | ❌ | ❌ | |
将指定日期加/减指定天数。 | ✅ | ❌ | ❌ | |
返回某日期的天数。 | ✅ | ❌ | ❌ | |
将指定日期组件的时间戳的时分秒置零后的时间戳结果。 | ✅ | ❌ | ❌ | |
将指定日期组件的时间戳的时分秒设置成最大。 | ✅ | ❌ | ❌ | |
返回两个日期之间的天数。 | ✅ | ❌ | ❌ | |
DAYS360 函数返回两个日期间相差的天数。 | ✅ | ❌ | ❌ | |
返回某日期的小时数。 | ✅ | ❌ | ❌ | |
一个指定日期在当年的周数。 | ✅ | ❌ | ❌ | |
返回某日期的分钟数。 | ✅ | ❌ | ❌ | |
返回某日期的月份。 | ✅ | ❌ | ❌ | |
可以计算两个特定日期中的工作日天数。 | ✅ | ❌ | ❌ | |
返回当前时间,与 TODAY 函数相同。 | ✅ | ✅ | ✅ | |
返回某日期的秒数。 | ✅ | ❌ | ❌ | |
返回当前服务器时间。 | ✅ | ❌ | ❌ | |
返回特定时间的十进制数字。 | ✅ | ❌ | ❌ | |
将日期对象转换成时间戳,主要用来将日期公式计算出的日期对象转为时间戳,给日期组件赋值。 | ✅ | ❌ | ❌ | |
返回今天。 | ✅ | ❌ | ❌ | |
返回特定日期的周数。 | ✅ | ✅类似WEEK | ✅类似WEEK | |
可以计算出距离某个具体时间点N个工作日后的另一个时间点默认工作日排除周末,且可以通过假期(Holiday)进行更加细致的工作日定义。 | ✅ | ❌ | ❌ | |
返回某日期的年份。 | ✅ | ❌ | ❌ | |
获取日期所在年份的首个日期。 | ✅ | ❌ | ❌ | |
获取日期所在年份的最后一个日期。 | ✅ | ❌ | ❌ | |
将日期格式化成字符串 | ❌ | ✅ | ✅ | |
该公式用于将文本类型的数字,转换成数值类型。 | ❌ | ✅ | ✅ | |
时间段字段1减去时间段字段2在时间粒度上的差值 | ❌ | ✅ | ✅ | |
在<时间字段>的基础上增加<时间粒度>的<偏移量> | ❌ | ✅ | ✅ | |
计算日期年份中的哪一季度, 是否是财年:1表示按照财年统计(4月份), 0表示按照自然年 | ❌ | ✅ | ✅ | |
将数字型的unix时间日期值unixtime转为日期值 | ❌ | ✅ | ✅ |
数组函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
将数组转换为字符串 | ❌ | ✅ | ✅ | |
将字符串解析为数组 | ❌ | ✅ | ✅ | |
返回数组长度 | ❌ | ✅ | ✅ | |
返回多数组拼接格式 | ❌ | ✅ | ✅ |
逻辑函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
判断相等。 | ✅ | ❌ | ❌ | |
判断不等。 | ✅ | ❌ | ❌ | |
并且、条件同时成立。 | ✅ | ❌ | ❌ | |
or 或,其中一个条件成立。 | ✅ | ❌ | ❌ | |
非、否定。 | ✅ | ❌ | ❌ | |
异或(计算机科学 特定逻辑判断)。 | ✅ | ❌ | ❌ | |
布尔值为假的逻辑情况。 | ✅ | ❌ | ❌ | |
布尔值为真的逻辑情况。 | ✅ | ❌ | ❌ | |
大于等于。 | ✅ | ❌ | ❌ | |
小于等于。 | ✅ | ❌ | ❌ | |
大于。 | ✅ | ❌ | ❌ | |
小于。 | ✅ | ❌ | ❌ | |
条件判断。 | ✅ | ❌ | ❌ | |
判断一个字段是否为空。 | ✅ | ❌ | ❌ | |
判断明细内的某个组件值是否为空,或者多项选择框的值是否为空。 | ✅ | ❌ | ❌ | |
判断明细内的某个组件提交的数组值中是否包含空字符串。 | ✅ | ❌ | ❌ | |
比较两个时间的大小,日期选择框1 大于 日期选择框2 返回 true,否则返回 false。 | ✅ | ❌ | ❌ | |
比较两个数字的大小,数值组件1 > 数值组件2,返回 true,否则返回 false。 | ✅ | ❌ | ❌ | |
类同SQL中的case when语法 | ❌ | ✅ | ✅ |
数学函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
统计指定表单提交的数据总数。 | ✅ | ✅ | ❌ | |
计算多个字段值总和。 | ✅ | ❌ | ❌ | |
获取一组数值的算术平均值。 | ✅ | ✅(AVG) | ❌ | |
返回一组数字中的最大值。 | ✅ | ✅ | ❌ | |
返回一组数字中的最小值。 | ✅ | ✅ | ❌ | |
当数值为负数的时候返回他的绝对值数值。 | ✅ | ❌ | ❌ | |
数值出现小数点的时候,将小位数指定到对应的位数。 | ✅ | ❌ | ✅ | |
返回将参数 number 向上舍入(沿绝对值增大的方向)为最接近的指定基数的倍数。 | ✅ | ❌ | ❌ | |
将参数 number 向下舍入(沿绝对值减小的方向)为最接近的 significance 的倍数。 | ✅ | ❌ | ❌ | |
将数字向下舍入到最接近的整数。 | ✅ | ❌ | ❌ | |
根据指定底数返回数字的对数。 | ✅ | ❌ | ❌ | |
返回 2 个数值组件相除的余数。 | ✅ | ❌ | ✅ | |
计算出数值组件乘幂的值。 | ✅ | ❌ | ❌ | |
将数字舍入到指定的小数位数,以十进制数格式对该数进行格式设置,并以数字形式返回结果。 | ✅ | ❌ | ❌ | |
取数值组件值正的平方根。 | ✅ | ❌ | ❌ | |
函数使所有以参数形式给出的数字相加并返回和。 | ✅ | ✅ | ❌ | |
返回结果为双精度浮点类型。 | ✅ | ❌ | ❌ | |
在给定的数组中,将数组间对应的元素相乘,并返回乘积之和。 | ✅ | ❌ | ❌ | |
返回数据集中第k个最大值。 | ✅ | ❌ | ❌ | |
返回数据集中第 k 个最小值。 | ✅ | ❌ | ❌ | |
对<字段>进行去重计数的结果,[排除字段]不参与求和的交叉计 | ❌ | ✅ | ❌ | |
字符串或整数强转浮点数 | ❌ | ❌ | ✅ | |
字符串或浮点数强转整数 | ❌ | ❌ | ✅ |
集合函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
计算两个集合的差集。 | ✅ | ❌ | ❌ | |
计算两个集合的交集。 | ✅ | ❌ | ❌ | |
计算第二个集合是否第一个集合的子集。 | ✅ | ❌ | ❌ | |
计算两个集合的并集。 | ✅ | ❌ | ❌ |
校验函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
数组判断是否重复。 | ✅ | ❌ | ❌ | |
判断是否在某个集合中存在。 | ✅ | ❌ | ❌ | |
比较两个字符串是否完全相同(区分大小写)。 | ✅ | ❌ | ❌ |
人员函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
无参数模式:User() 获取当前登录人; 有参数模式:User(level) 当前登录人的主管, level 是 获取当前登录人的主管。 | ✅ | ❌ | ❌ | |
人员搜索框需要联动带出一些基本信息。 | ✅ | ❌ | ❌ | |
获取当前登陆人的主管名称。 | ✅ | ❌ | ❌ | |
返回对应的人员信息对象数组(即人员组件底层的值)。 | ✅ | ❌ | ❌ | |
获取当前登录人昵称。 | ✅ | ❌ | ❌ | |
登录人。 | ✅ | ❌ | ❌ | |
获取当前登录人员工唯一ID(员工UserID)。 | ✅ | ❌ | ❌ | |
用于根据userId获取指定用户所在的部门信息。 | ✅ | ❌ | ❌ |
高级公式函数
函数名称 | 说明 | 表单场域 | 报表场域 | 数据准备 |
用于删除目标表数据。 | ✅ | ❌ | ❌ | |
用于把当前录入表的数据插入到目标表中。 | ✅ | ❌ | ❌ | |
用于更新目标表中符合条件的数据。 | ✅ | ❌ | ❌ | |
用于往目标表单中插入或者更新数据。 | ✅ | ❌ | ❌ |
公式常见问题
1. EQ 条件,被更新的表单中用于比较的组件需要放在 EQ 的第一个参数
EQ 用于做比较条件,被更新的表单中需要用于比较的组件需要放在 EQ 的第一个参数


2. EQ 条件,被更新的表单中用于比较的组件不能嵌套其他公式


注:EQ 后面需要添加比较的组件,不能直接添加公式,如有需要可以在用于比较的组件后面添加公式。
3. 逗号、括号等需要是英文

4. 不能使用不支持的组件作为比较条件
能作为判断条件的组件: 「单行文本」、「多行文本」、「单选」、「下拉单选」、「日期」,其他组件暂时不支持。
5. 不能赋值给不支持的组件
能进行赋值的组件: 只有同类型的组件才能互相赋值,「单行文本」、「多行文本」、「数值」、「单选」、「下拉单选」、「复选」、「下拉复选」、「级联选择」、「日期」、「日期区间」、「图片上传」、「附件」、「成员」、「地址」。其他组件暂时不支持。
6. 不同类型的组件不能互相赋值
注意:只有同类型的组件才能互相赋值,比如「数值」组件不能往「图片上传组件」赋值,详情如下表所示:
来源组件/公式 | 可赋值的组件 |
单行文本 | 单行文本 |
多行文本 | 多行文本 |
数值 | 单行文本 多行文本 数值 |
单选 | 单选 下拉单选 |
下拉单选 | 单选 下拉单选 |
复选 | 复选 |
下拉复选 | 下拉复选 |
级联选择 | 级联选择 |
日期 | 日期 |
日期区间 | 日期区间 |
图片上传 | 图片上传 |
附件 | 附件 |
成员 | 成员 |
地址 | 地址 |
文本函数 | 单行文本 多行文本 |
7. 比较条件(与)的逻辑用 AND, 暂不支持(或)的逻辑


8. 业务关联公式暂不支持在条件中与字符串做判断,可使用 IF公式判断后再使用业务关联公式


9. 业务规则使用IF条件后不生效?
若配置业务关联公式使用IF公式先进行判断,则IF判断的条件应为主表条件。
注意IF需要写在外层判断,否则会不生效。


10. 应用配置错误,请联系管理员
配置业务关联公式后,若提交数据时报“应用配置错误,请联系管理员”错误,这是由于目标表进行比较以及填充的目标列均为未参与搜索字段,需要在目标表的数据管理页中将目标或比较字段添加到搜索字段中。

10.1 操作步骤如下:
10.1.1 找到目标表的数据管理页中的设置查询条件

10.1.2 查看目标表字段是否参与搜索,若未参与搜索,可通过设置参与搜索字段配置

10.1.3 进入设置页面后,在模糊搜索项将目标列配置为搜索字段,并点击立即执行

11. 主条件配置错误

该问题是由于子条件位置放置错误,需要用主表的字段先进行匹配才行
12. 子条件配置错误,一次只能更新一个明细,若匹配目标表的数据为主表数据,则应放在主条件中,并用 AND 连接


13. 当匹配条件的目标列为子表数据时,那么配置公式后会报“目标列不在更新的明细下”的错误,需要将目标列修改为主表字段


14. 参数格式不匹配
配置业务关联规则公式提示:参数格式不匹配,请检查是否通过代码方式修改了组件标题进行换行,若组件标题有换行,在配置公式的时候字段就会进行换行展示且会报错。

15. 业务关联规则与集成自动化执行顺序相关问题
15.1 混用业务关联规则和集成自动化时怎么排序执行?
目前,业务关联规则和集成自动化是独立的执行逻辑,而且都是按各自的执行顺序执行,即执行顺序不可控。
如果混合使用的话,可能导致同一个目标表单被两套任务调度系统无法按预期的顺序执行,导致业务结果的更新结果异常,尤其是对于进销存等有增有减的复杂业务处理。
优先推荐使用宜搭的集成自动化进行业务间同步。


15.2 一个集成自动化节点有多条业务关联规则怎么排序执行?
业务关联规则目前支持多条规则写入,但由于产品限制,规则之间无法选择执行顺序。
为解决排序执行的问题,可以使用集成自动化的新增、更新、删除等【数据节点】代替,这些节点支持编排顺序,也支持在【运行日志】中查看执行记录。
具体设置可以参考以下截图:



16. 表单编辑前的值和表单编辑后的值区别?
表单编辑状态下配置业务关联规则,会有表单编辑前的值和表单编辑后的值,区别如下:
表单字段 A 的的值是【西瓜】,修改该字段值为【桃子】,编辑前的值为【西瓜】,编辑后的值为【桃子】,一般用于编辑后需要修改原目标表单值的场景中。

17. 高级函数的用量限制?
目前宜搭业务规则函数支持的用量如下:
核心函数 | 作用 | 用量限制 |
公式主要用于把当前录入表的数据插入到目标表中 |
| |
公式用于更新目标表中符合条件的数据 |
| |
公式用于往目标表单中插入或者更新数据 |
| |
公式用于删除目标表数据 |
|
18. 表单字段新增导致业务规则没有执行?
目标表新增了字段以后,历史数据还是没有这个字段的,所以是无法更新的,需要将历史数据编辑保存,让新字段加载出来,才可以正常更新。可以通过批量导入/更新的方案来解决。
19. 使用日期组件作为判断条件,导致公式未能成功运行?
不建议使用日期组件作为判断条件,目前获取的是时间戳,时间戳用来做判断条件是不准确的。
可以使用一个单行文本把日期组件的值赋值给单行文本,然后用单行文本来作为判断条件。
20. 业务规则触发场景?
集成自动化新建的数据暂不支持触发业务规则。
视频讲解: