公式与验证规则参考

本参考指南详细列出了平台验证规则、计算字段和默认值公式中所支持的全部运算符、函数规格及使用示例。

概述

本文档是平台公式引擎与验证规则的完整参考手册,涵盖支持的字段类型、运算符及函数的参数规格与使用示例,并提供常用验证规则的典型写法。管理员可借助本文档快速查阅和编写计算字段、默认值公式及验证规则表达式。

支持的字段类型

公式引擎支持在表达式中插入以下类型的字段:

  • 金额、百分数、小数、数字。
  • 日期、日期时间、时间。
  • 单行文本、多行文本、邮箱、网址、地址、手机。
  • 布尔值。
  • 定位组件、签到组件、收款组件。
  • 计算字段、统计字段。
  • 跨对象的查找关联字段的计算字段及统计字段。

完整运算符与函数清单

返回值类型 运算符 / 函数 参数要求 功能说明 示例 / 备注
通用 () - 改变和标注运算符的优先级。 (3 + 2) * 5
通用 IF(logical_test, value_if_true, value_if_false) 3 个参数。
第 1 个为布尔类型,第 2、3 参数类型必须一致。
判断条件是否为 true,如果是则返回第 2 参数值,否则返回第 3 参数值。 IF(true, 34, 52) 结果为 34
通用 CASE(expression, value1, result1, value2, result2, ..., else_result) 不定参数。
所有 result 和 else_result 必须为同一种类型。
将 expression 依次与 value 进行比较,相等则返回对应 result。若均不相等,返回 else_result。 CASE(3, 2, 2, 3, 33, 1.3) 结果为 33
通用 NULLVALUE(expression, substitute_expression) 2 个参数。
返回值类型与第 2 参数一致。
判断表达式结果是否为空,如果是则返回替代值,否则返回原值(或 Null)。 NULLVALUE(Null, 1) 结果为 1
NULLVALUE(5, 1) 结果为 Null
数值 +, -, *, / 2 个参数。
数值、百分比、金额。
执行基础的数学运算。 (3 + 2) * 6 / 5 结果为 6
数值 - (日期相减) 2 个参数。
均为日期类型。
计算两个日期之间的差值,以 为单位。 日期 A - 日期 B 结果为天数(数值)
数值 - (日期时间相减) 2 个参数。
均为日期时间类型。
计算两个时间点之间的差值,以 小时 为单位。 时间 A - 时间 B 结果为小时数(数值)
数值 - (时间相减) 2 个参数。
均为时间类型。
计算时间值之差,以 小时 为单位。 17:00:00 - 15:00:00 结果为 2
数值 VALUE(string) 1 个参数。
文本型。
将文本形式的数字转换成数字(支持负数和小数),失败返回空(Null)。 VALUE('-1982.0413') 结果为 -1982.0413
数值 MIN(number1, number2) 2 个参数。
均为数值类型。
返回两个参数中的较小值。 MIN(4, 13) 结果为 4
数值 MAX(number1, number2) 2 个参数。
均为数值类型。
返回两个参数中的较大值。 MAX(4, 13) 结果为 13
数值 MULTIPLE(number1, number2) 2 个参数。
均为数值类型。
返回两数相乘的结果。 MULTIPLE(4, 13) 结果为 52
数值 MOD(number1, number2) 2 个参数。
均为数值类型。
返回相除之后的余数(模运算)。 MOD(13, 4) 结果为 1
数值 ADDS(number1, number2) 2 个参数。
均为数值类型。
返回两数相加的结果。 ADDS(13, 4) 结果为 17
数值 SUBTRACTS(number1, number2) 2 个参数。
均为数值类型。
返回两数相减的结果。 SUBTRACTS(13, 4) 结果为 9
数值 YEAR(date) 1 个参数。
日期或日期时间。
获取指定时间的年份数值。 YEAR(DATEVALUE('1982-04-13')) 结果为 1982
数值 MONTH(date) 1 个参数。
日期或日期时间。
获取指定时间的月份数值。 MONTH(DATEVALUE('1982-04-13')) 结果为 4
数值 DAY(date) 1 个参数。
日期或日期时间。
获取指定日期的日数值(几号)。 DAY(DATEVALUE('1982-04-13')) 结果为 13
数值 LEN(text) 1 个参数。
文本型。
返回字符串的字符长度。 LEN('xiaoke') 结果为 6
时间周期 YEARS(number) 1 个参数。
数值型。
用于在日期加减中指定年的偏量。 TODAY() + YEARS(1) 结果为一年后的今天
时间周期 MONTHS(number) 1 个参数。
数值型。
用于在日期加减中指定月的偏量。 TODAY() + MONTHS(2)
时间周期 DAYS(number) 1 个参数。
数值型。
用于在日期加减中指定天数偏量。 TODAY() - DAYS(7)
时间周期 HOURS(number) 1 个参数。
数值型。
用于在时间加减中指定小时偏量。 NOW() + HOURS(4)
时间周期 MINUTES(number) 1 个参数。
数值型。
用于在时间加减中指定分钟偏量。 NOW() - MINUTES(30)
日期 +, - 2 个参数。
日期与时间偏移量。
对日期进行加减偏移计算。 创建时间 + DAYS(4)
日期 DATE(year, month, day) 3 个参数。
均为数值。
传入年、月、日数值构建一个日期类型值。 DATE(1982, 4, 13) 结果为 1982-04-13
日期 DATEVALUE(string) 1 个参数。
字符串。
将符合日期格式的字符串解析为日期值。 DATEVALUE('1982-04-13')
日期 TODAY() 0 个参数。 返回当前的日期(不含具体时刻)。 2026-07-02
日期 DATETIMETODATE(datetime) 1 个参数。
日期时间。
提取并返回日期时间中的日期部分。 DATETIMETODATE(NOW())
日期时间 +, - 2 个参数。
日期时间与偏移量。
对具体的时间戳进行加减偏移计算。 截止时间 - DAYS(1)
日期时间 DATETIMEVALUE(string) 1 个参数。
字符串。
将字符串解析为具体的日期时间类型值。 DATETIMEVALUE('2001-08-24 15:45:25')
日期时间 NOW() 0 个参数。 返回当前的实时日期时间(含时分秒)。 2026-07-02 17:38:00
时间 DATETIMETOTIME(datetime) 1 个参数。
日期时间。
提取并返回日期时间中的时刻部分。 DATETIMETOTIME(NOW()) 结果如 17:02:40
文本 & 2 个参数。
均为文本类型。
将两个字符串进行拼接合并。 '张三' & '李四' 结果为 "张三李四"
文本 '' 1 个参数。
单引号包裹。
声明单行文本常量。 '单行文本内容'
文本 '''''' 1 个参数。
三单引号包裹。
声明包含换行的多行文本常量。 '''多行文本内容'''
文本 NUMBERSTRING(number) 1 个参数。
数值或金额。
将阿拉伯数字转换为中文大写数字。 NUMBERSTRING(198204.13) 结果为 "壹拾玖万捌仟贰佰零肆点壹叁"
文本 NUMBERSTRINGRMB(number) 1 个参数。
数值或金额。
将阿拉伯数字转换为中文大写人民币金额。 NUMBERSTRINGRMB(198204.13) 结果为 "壹拾玖万捌仟贰佰零肆元壹角叁分"
布尔 <, >, >=, <=, 2 个参数。
同类可比类型。
进行大小或相等性判定,返回 truefalse 1 < 2 结果为 true
布尔 AND(boolean1, boolean2, ...) 不定参数。
均为布尔值。
逻辑与。所有条件均为 true 时返回 true AND(2 > 1, 5 > 3) 结果为 true
布尔 OR(boolean1, boolean2, ...) 不定参数。
均为布尔值。
逻辑或。只要有一个条件为 true 即返回 true OR(2 > 1, 5 < 3) 结果为 true
布尔 NOT(boolean) 1 个参数。
布尔值。
逻辑非。反转布尔值。 NOT(2 > 1) 结果为 false
布尔 ISNULL(expression) 1 个参数。
任意类型。
判定字段或表达式计算结果是否为空。 ISNULL(手机号) 结果为布尔值
布尔 ISNUMBER(string) 1 个参数。
字符串。
判定该文本字符串是否可以成功转换为数字。 ISNUMBER('5') 结果为 true
布尔 STARTWITH(string1, string2) 2 个参数。
字符串。
判定 string1 是否以检索字符串 string2 开头。 STARTWITH('abcdef', 'ab') 结果为 true
布尔 ENDWITH(string1, string2) 2 个参数。
字符串。
判定 string1 是否以检索字符串 string2 结尾。 ENDWITH('aecdab', 'ab') 结果为 true
布尔 EQUALS(string1, string2) 2 个参数。
字符串。
比较两个文本是否完全一致(区分大小写)。 EQUALS('Abc', 'abc') 结果为 false
布尔 CONTAINS(string1, string2) 2 个参数。
字符串。
判定 string1 文本中是否包含 string2 关键字。 CONTAINS('abcdef', 'cd') 结果为 true

常用验证规则示例

1. 结束日期不能早于开始日期

结束日期 < 开始日期

2. 状态为“已完成”时,完成日期不能为空

AND(EQUALS(状态, '已完成'), ISNULL(完成日期))

3. 折扣率不能超过 30% 且金额必须大于 0

OR(折扣率 > 0.3, 金额 <= 0)

4. 手机号与电话至少填写一项

AND(ISNULL(手机), ISNULL(电话))
2026-08-11
0 0