公式运算符及函数
在构建公式时使用这些运算符和函数。除非另行指定,否则所有的函数都可用在任何能够包含公式(例如,公式字段、验证规则、批准过程和工作流规则)的位置。
函数
函数即系统定义的公式,可能需要您的输入值,并返回一个或几个值。例如,TODAY() 不需要输入值,但会返回当前日期。TEXT(value) 函数需要您输入百分比、数字或货币并返回文本。
运算符
一个符号,指定要执行的计算类型或其执行顺序。例如,“+”号指定两个值应相加。左括号和右括号指定想要先计算的表达式。
数学运算符
+ 加
计算两个值的和。
使用: 值 1 + 值 2
,并用合并字段、表达式或其他数值替换每个值。
返回值: 数值
Amount + Maint_Amount__c + Services_Amount__c
此公式计算产品 Amount(金额)、维护金额与服务费的总和。请注意,Maint amount(维护金额)和 Service Fees(服务费)是自定义金额字段。
Monday_Hours__c + Tuesday_Hours__c + Wednesday_Hours__c + Thursday_Hours__c + Friday_Hours__c > 40
使用如上验证规则中的公式,可以在为各个工作日输入的工作时间总和大于 40 时显示下面的错误消息:“总工作时间不能超过 40 个小时”。本示例要求自定义对象上有五个自定义字段,每个工作日一个。
- 减
计算两个值的差。
使用: 值 1 - 值 2
,并合并字段、表达式或其他数值替换每个值。
返回值: 数值
Amount - Discount_Amount__c
此公式计算产品 Amount(金额)减去 Discount Amount(折扣金额)的差。请注意,Discount Amount(折扣金额)是一个自定义金额字段。
* 乘
乘以其值。
使用: 值1 * 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 数值
Consulting_Days__c * 1200
此公式计算咨询天数乘以 1200 的数值,假定此公式字段是货币数据类型且咨询按每天 1200 美元的价格收费。请注意,Consulting Days(咨询天数)是一个自定义字段。
/ 除
除以其值。
使用: 值1 / 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 数值
AnnualRevenue/ NumberOfEmployees
此公式使用金额字段计算每个 员工的收入金额。
IF(NumberOfOpportunities > 0, NumberOfWonOpportunities / NumberOfOpportunities, null)
此公式计算市场活动中业务机会的客户赢得率。
^ 幂
使一个数字变成指定数字的幂。
使用: 数字^整数
,用合并字段、表达式或其他数值替换数字,用包含整数的合并字段、表达式或任何整数替换整数。
返回值: 数值
NumberOfEmployees^4
计算员工数的四次幂。
避免使用负整数
() 括号
指定先计算左括号和右括号内的表达式。所有其他表达式均使用标准运算符优先权进行评估。
使用: (表达式1) 表达式2...
,用合并字段、表达式或其他数值替换每个表达式。
(Unit_Value__c - Old_Value__c) / New_Value__c
计算旧值与新值的差值,并除以新值。
逻辑运算符
= 与 ==(等于)
计算两个值是否相等。= 和 == 运算符可以互换。
使用: 表达式1=表达式2 或表达式1 == 表达式2
,用合并字段、表达式或其他数值替换每个表达式。
返回值: 布尔
ExpiringDate = CreatedDate + 5
如果到期日等于记录的创建日期与五天之和返回 true。
IF(Probability = 1, ROUND(Amount*0.02, 2), 0)
此公式计算佣金金额,具有 100% 可能性的业务机会按 2% 计算佣金。所有其他业务机会的佣金值为零。
具有 90% Probability(可能性)的业务机将无法获得佣金。
具有 100% Probability(可能性)和 100,000 美元 Amount(金额)的业务机会将获得 2,000 美元的佣金。
不要使用此函数进行空比较,如 MyDateTime__c == null。而应使用 ISBLANK。
!=
(不等于)
计算两个值是否不相等。
使用: 表达式1 <> 表达式2
或 表达式1 != 表达式2
,用合并字段、表达式或其他数值替换每个表达式。
返回值: 布尔
IF(Maint_Amount__c + Services_Amount__c `<>` Amount, "DISCOUNTED", "FULL PRICE")
如果产品的维护金额和服务金额之和不等于产品金额,此公式将在产品上显示“DISCOUNTED”(已折扣金额)。否则,显示“FULL PRICE”(全价)。请注意,本示例对 Maint Amount(维护金额)和 Services Amount(服务金额)使用两个自定义金额字段。
不要使用此函数进行空比较,如 MyDateTime__c != null。而应使用 ISBLANK。
(小于)
计算一个值是否小于此符号后面的值。
使用: 值1 < 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(AnnualRevenue < 1000000, 1, 2)
将值“1”赋予小于一百万的收入,将值“2”赋予大于一百万的收入。
>(大于)
计算一个值是否大于此符号后面的值。
使用: 值1 > 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(commission__c > 1000000, "High Net Worth", "General")
将“High Net Worth”(高资产净值)值赋予大于一百万的佣金。请注意,这是使用佣金自定义字段的文本公式字段。
(小于或等于)
计算一个值是否小于或等于此符号后面的值。
使用: 值1 <= 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(AnnualRevenue <= 1000000, 1, 2)
将值“1”赋予小于等于一百万的收入,将值“2”赋予大于一百万的收入。
>=(大于或等于)
计算一个值是否大于或等于此符号后面的值。
使用: 值1 >= 值2
,用合并字段、表达式或其他数值替换每个值。
返回值: 布尔
IF(Commission__c >= 1000000, "YES", "NO")
将值“YES”(是)赋予大于或等于一百万的佣金。请注意,这是使用自定义货币字段 Commission(佣金)的文本公式字段。
&&(与)
评估两个值或表达式是否都为真。使用此运算符作为逻辑函数 AND 的备选。
使用: 逻辑1 && 逻辑2
,以及用您希望评估的值或表达式替换逻辑1 和逻辑2。
返回值: 布尔
IF((Price<100 && Quantity<5),“Small”, null)
如果价格小于 100 并且数量小于五,此公式显示 “Small”。否则此字段为空。
||(或)
评估多个值或表达式中是否至少有一个为真。使用此运算符作为逻辑函数 OR 的备选。
使用: 逻辑1 || 逻辑2
,用您希望评估的值或表达式替换任意数量的逻辑引用。
返回值: 布尔
IF(Priority = "High" || Status = "New", ROUND(NOW()-CreatedDate, 0), null)
如果个案 Status(状态)为“New”(新建)或 Priority(优先级)为“High”(高),则此公式返回个案未被处理的天数。如果个案是今天打开的,则该字段显示零。
Discount_Rate__c < 0 || Discount_Rate__c > 0.40
当自定义字段 Discount Rate(折扣率)的值不在 0 和 40% 之间时,此验证规则公式显示下面的错误消息:“Discount Rate cannot exceed 40%.”(折扣率不能超过 40%。)
文本运算符
&(串联)
连接两个或两个以上字符串。
使用: 字符串1&字符串2
,用合并字段、表达式或其他值替换每个字符串。
返回值: 文本
"Expense-" & Trip_Name__c & "-" & ExpenseNum__c
此公式在行程名称和支出编号前显示文本“Expense-”。这是使用支出编号自定义字段的文本公式字段。
日期和时间函数
ADDMONTHS
返回的日期是,指定日期之前或之后的指定月数。如果剩余月的天数比起始月少,函数会返回剩余月的最后一天。否则,结果包含与指定日期相同的日组件。
使用: ADDMONTHS (date/datetime,number)
,使用起始日期与添加的月数替换date/datetime
和number
。
参数:
- 日期、日期时间:
date/datetime
日期或日期时间,表示起始日期。 - 数字:
number
数值,表示要增加的月数。
返回值: 日期
ADDMONTHS (StartDate, 5)
为开始日期添加 5 个月。例如,如果开始日期是 2017 年 9 月 20 日,结果日期是 2018 年 2 月 20 日;如果开始日期是 2017 年 9 月 30 日,结果日期是 2018 年 2 月 28 日。
支持传入日期或日期时间类型的参数,但是返回值始终是日期类型,而不可能是日期时间类型。
DATE
从您输入的年、月和日值返回一个日期值。如果公式字段中的 DATE 函数值是无效日期,会返回错误信息。
使用: DATE(年,月,日)
,用一个四位数字年份替换年,用一个两位数字月份替换月,用一个两位数字日期替换日。
参数:
- 年:
number
四位数字表示的年份。 - 月:
number
表示月份值的数值。 - 日:
number
表示日部分的数值。
返回值: 日期
DATE(2005, 1, 2)
创建一个 2005 年 1 月 2 日的日期字段。
参数个数只能是三个,也不支持传入2005-01-01
这种字符串。
当传入的函数参数格式正确但是数值不符合规范时,并不会报错,而是会返回一个可能错误的值,比如如非闰年的DATE(2021,2,29)将返回2021-03-01,DATE(2021,121,29)将返回2031-01-29。
DATEVALUE
为日期、日期时间或文本表达式返回日期值。
使用: DATEVALUE(表达式)
参数: date/datetime/text
日期、日期时间或日期、日期时间格式的文本值的合并字段或表达式
返回值: 日期
DATEVALUE(ClosedDate)
基于结束日期时间字段值显示日期值,参数ClosedDate可以是日期、日期时间类型,也可以是日期、日期时间格式的字符串类型。
DATEVALUE("2005-1-15 12:30")
以日期值形式返回“2005-01-15”。
■ 如果该函数中所引用的字段不是有效的文本或日期时间字段,则该公式中的字段可能显示为异常字符串或错误信息,比如DATEVALUE("2005-111-15") 将返回NaN-NaN-NaN。
■ 当输入日期时,请将日期放在引号内,并使用如下格式:YYYY-MM-DD,即,四位数字年份、两位数字月份和两位数字日期。
■ 如果表达式不在有效的日期范围内(例如,MM 不在 01 和 12 之间),则该公式中的字段将显示“NaN-NaN-NaN”。
■ 该公式始终会返回utc(协调世界时间)0点值,且除非传入的参数明确带了时区信息,否则将始终使用用户的时区计算,比如DATEVALUE('2018-12-12 06:06:06')返回的是2018-12-11,而DATEVALUE('2018-12-12T06:06:06Z')返回的是2018-12-12。
DATETIMEVALUE
返回年份、月份、日和 GMT 时间值。
使用: DATETIMEVALUE(表达式)
参数: text
不带TZ字符的日期/日期时间格式的文本值、合并字段或表达式
返回值: 日期时间
DATETIMEVALUE(TEXT(ClosedDate))
基于结束日期字段值显示日期时间值,参数ClosedDate必须是日期类型,而不可以是日期时间类型, 因为如果ClosedDate是日期时间类型,TEXT(ClosedDate)返回的会是"2020-11-04 03:45:00Z"这种带Z的字符串。
DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", ""))
基于结束日期字段值显示日期时间值,参数ClosedDate可以是日期类型,也可以是时间类型,因为此示例中把最后的Z字符清除掉了。
DATETIMEVALUE("2005-11-15 17:00:00")
以日期和时间值形式返回“2005-11-15T17:00:00.000Z”(即utc时间2005 年 11 月 15 日17点整)。
DAY
以 1 与 31 之间的一个数字形式返回一个月中的某一天。
使用: DAY(日期)
参数: date 日期字段或值(如 TODAY())
返回值: 数值
DAY(Code_Freeze__c)
返回您的自定义代码冻结日期中的日。请注意,这不适用于“日期时间”字段。
只支持传入日期类型值,不支持“日期时间”类型值,也不支持字符串类型值。
HOUR
以 24数字格式(0~23)返回GMT时区小时值。
使用: HOUR(datetime)
,使用日期时间值或 DATETIMEVALUE() 等值替换 datetime,不支持传入字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
HOUR(ClosedDate)
仅根据日期时间完结字段值显示其中的小时。
HOUR(DATETIMEVALUE('2018-12-12 18:06:08'))
返回18,而不是10。
MILLISECOND
以 0 与 999 之间的数字形式,返回毫秒值。
使用: MILLISECOND(datetime)
,使用日期时间值 替换 datetime,例如 NOW(),不支持传入日期类型或字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
MILLISECOND(DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", "")))
仅根据完结时间字段的值显示时间字段中的毫秒值。
MILLISECOND(NOW())
返回当前时间的毫秒 值,比如125。
MINUTE
以 0 与 60 之间的数字形式,返回分钟值。
使用: MINUTE(datetime)
,使用日期时间值替换 datetime,例如 NOW(),不支持传入日期类型或字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
MINUTE(DATETIMEVALUE(SUBSTITUTE(TEXT(ClosedDate), "Z", "")))
仅根据完结时间字段的值显示时间字段中的分钟值。
MINUTE(NOW())
返回当前时间的分钟值,比如12。
MINUTE函数只授受datetime类型作为参数,不支持time,date,text类型作为参数,可以先用DATETIMEVALUE函数进行类型转换后再调用该函数。
MONTH
以给定日期的数字格式返回月份,即 1(一月)与 12(十二月)之间的一个数字。
使用: MONTH(日期)
,用包含您希望返回其月份的日期的字段或表达式替换日期。
参数: date 日期字段或值(如 TODAY())
返回值: 数值
MONTH(SLAExpirationDate__c)
返回您的服务级协议到期的月份。本示例使用名为 SLA Expiration Date(SLA 到期日期)的自定义日期字段。
MONTH(TODAY())
以数字格式返回当前月份。例如,对于月份“February”将返回值“2”。
MONTH函数只授受date类型作为参数,不支持time,datetime,text类型作为参数,可以先用DATEVALUE函数进行类型转换后再调用该函数。
NOW
返回表示当前时刻的日期时间。
使用: NOW()
返回值: 日期时间
IF(Status = "Open", ROUND(NOW()-CreatedDate, 0), null)
此公式检查潜在客户是否未处理;如果是,则通过从当前日期和时间减去创建日期和时间来计算它未被处理的天数。结果是舍入为零小数位的未处理天数。如果潜在客户已处理,则此字段为空。
■ 请勿删除括号。
■ 保留括号为空。括号中不能包含值。
■ 在 NOW 函数返回“日期时间”字段而不是“日期”字段。Created Date(创建日期)和 Last Modified Date(上次修改日期)为“日期/间”字段,而 Last Activity Date(上次活动日期)为“日期”字段。
■ 如果您希望使用“日期”字段,请使用 TODAY 函数。
■ 始终使用用户的时区计算日期和时间,该函数本身返回的是utc时间值,比如当前是北京时间2020-11-07 15:28,NOW()返回值为"2020-11-07T07:28:00Z"。
■ 与函数 NOW 和其他“日期时间”字段一起使用加和减运算符,以返回一个代表天数的数字。例如,NOW() - CreatedDate 计算自一个记录创建日期以来的天数。在本示例中,公式字 段数据类型为数字。
■ 与 NOW 函数和数字一起使用加和减运算符,以返回一个日期和时间。例如,NOW() +5 计算当前时间之前五天的日期和时间。在本示例中,公式字段数据类型为“日期时间”。
SECOND
以 0 与 60 之间的数字形式,返回秒值。
使用: SECOND(datetime)
,使用日期时间值或 DATETIMEVALUE() 等值替换 datetime,不支持传入日期类型值或字符串参数。
参数: datetime 日期时间字段或值(如 NOW())
返回值: 数值
SECOND(ClosedDate)
仅根据完结时间字段的值显示其中的秒值。
SECOND(DATETIMEVALUE('2018-12-12 18:06:08'))
返回 8。
TIMENOW
返回表示当前时刻的时间值 (GMT)。如果您仅想要跟踪时间,而非日期,使用此函数,而不是 NOW 函数。
使用: TIMENOW()
返回值: 时间
IF(Rating="Hot", TEXT(TIMENOW()), TEXT(TIMEVALUE(CreatedDate)))
此公式会检查并了解潜在客户是否评级为“热门”;如果是,返回正确时间。否则,返回自某人创建潜在客户之后的时间。
■ 请勿删除括号。
■ 保留括号为空。括号中不能包含值。
■ 如果您希望使用“日期”字段,请使用 TODAY 函数。
■ 显示的值为GMT时区值。
■ 因Steedos还未支持time类型字段,所以暂时只能用TEXT函数输出文本值。
TIMEVALUE
返回没有日期的当地时间值,例如工作时间。
使用: TIMEVALUE(value)
,并使用时间格式的文本值、合并字段或表达式替换 value。
参数: text 时间格式的字符串,如17:30:45.125
返回值: 时间
TEXT(TIMEVALUE("17:30:45.125"))
返回 "17:30:45.125"。
■ 请勿对日期时间字段使用 TIMEVALUE。
■ 因Steedos还未支持time类型字段,所以暂时只能用TEXT函数输出文本值。
TODAY
将当前日期返回为日期数据类型。
使用: TODAY()
返回值: 日期
TODAY()-Sample_date_c
计算样本中还剩多少天。
SampleDate < TODAY()
本示例可确保用户无法将 Sample Date(采样日期)更改为过去的日期。
■ 请勿删除括号。
■ 保留括号为空。括号中不能包含值。
■ 使用含 TODAY 函数的“日期”字段而不是“日期时间”字段。Last Activity Date(上次活动日期)是“日期”字段;而 Created Date(创建日期)和 Last Modified Date(上次修改日期)为“日期时间”字段
■ 如果您希望使用日期时间字段,请参阅 NOW 函数。
■ 始终使用用户的时区计算日期和时间,TODAY()返回的是当天GMT时区0点值。
■ 与 TODAY 函数和其他“日期”字段一起使用加和减运算符,以返回一个代表天数的数字。例如,TODAY()-LastActivityDate 计算自上次活动日期后的天数。在本示例中,公式字段数据类型为数字。
■ 与 TODAY 函数和数字一起使用加和减运算符,以返回一个日期。例如,TODAY() +5 计算今天之前五天的日期。在本示例中,公式字段数据类型为日期。
WEEKDAY
返返回指定日期是周几,用 1 表示周日,2 表示周一,以此类推,7 表示周六。
使用: WEEKDAY(date)
参数: date 日期字段或值(如 TODAY())
返回值: 数值
WEEKDAY(customdate1__c)
使用 customdate1__c 返回指定日期的周数。
■ 该函数只支持日期类型值,不支持日期时间或字符串类型值作为参数。
■ 该函数与javascript编程语言的Date.getDay函数有差异,后者用0表示周日,1表示周一,以些类推,6表示周六。
YEAR
以给定日期的数字格式返回四位数字表示的年份。
使用: YEAR(日期)
,用包含您希望返回的年份的字段或表达式替换日期。
参数: date 日期字段或值(如 TODAY())
返回值: 数值
YEAR(TODAY() )- YEAR(Initial_Meeting__c )
返回自您与客户初次会面后的年数。本示例使用名为 Initial Meeting(初次会面)的自定义日期字段。
■ 该函数只支持日期类型值,不支持日期时间或字符串类型值作为参数。
■ 该函数与javascript编程语言的Date.getYear函数表现一致。
逻辑函数
AND
如果所有的值均为真,则返回 TRUE(真)响应;如果一个或多个值为假,则返回 FALSE(假)响应。使用此函数作为运算符 && (AND) 的备选。
使用: AND(逻辑1,逻辑2...)
参数:
- 逻辑表达式1:
boolean
您希望计算的返回布尔类型值的公式表达式1。 - 逻辑表达式2:
boolean
您希望计算的返回布尔类型值的公式表达式2。 - ... 更多返回布尔类型值的其他表达式。
返回值: 布尔
IF(AND(Price<1,Quantity<1),"Small", null)
如果价格和数量小于 1,此公式将显示“Small”。如果资产有大于 1 的价格或数量,则此字段为空。
BLANKVALUE
判断表达式是否具有值,如果没有值则返回一个置换表达式。如果表达式具有值,则返回表达式的值。
使用: BLANKVALUE(表达式, 置换表达式)
参数:
- 表达式:
text/number/date/datetime
您希望计算的表达式,支持除布尔类型外的常用字段类型值。 - 置换表达式:
text/number/date/datetime
您希望替换任何空白值的值,数据类型应该跟第一个参数一致,当不一致时将返回错误信息。
返回值: 与传入的参数一样的数据类型
BLANKVALUE(Department, "Undesignated")
如果部门字段包含值则此公式返回部门字段的值。如果部门字段为空,则此公式返回词语未指定。
BLANKVALUE(Payment_Due_Date__c, StartDate + 5)
此公式返回当 Payment Due Date(付款到期日期)为空时,合同开始日期之后第五天的日期。Payment Due Date(付款到期日期)是自定义日期字段。
- 如果字段包含字符、空白或零,则字段不为空。例如,如果字段包含使用空格键插入的空格,则该字段不为空。
- 如果字段没有值,则使用 BLANKVALUE 函数返回指定置换表达式对应的值;如果您只想检查字段是否有值,则使用 ISBLANK函数。
- 传入的两个参数值类型应该一样,否则公式将直接报错。
- 传入的参数不支持布尔类型值。
- 传入的参数不支持select字段类型值。
- 如果您对数值字段判断空值,比如
BLANKVALUE(Amount, 100)
,则字段没有值且配置将空白字段处理为空白时,该公式才返回第二个参数中的指定的置换表达式值,如果字段没有值且配置将空白字段处理为0时,则按0值返回而不是返回第二个参数中的指定表达式值。- 因为我们的空白字段处理方式默认值是“将空白字段视为零”,所以低代码中要小心,不配置这个属性时,默认为按0值处理。零代码配置时问题不大,因为空白字段处理属性是必填的,不存在默认值问题。
■ 该函数与 ISBLANK很像,但是该函数会进一步返回字段值为空时的置换表达式对应的值,一般来说,如果您只是想判断字段值是否为空,应该使用后者而不是该函数。
■ 该函数不支持传入select字段类型参数,但是如果字段是单选的,可以先用TEXT函数选把select类型转换为text类型,比如BLANKVALUE(TEXT(Leave__c), "error")
,多选的select字段类型无法使用BLANKVALUE函数。
- 字段类型为
text
时:BLANKVALUE(FieldName, "替换值")
- 字段类型为
select
时:IF(ISBLANK(FieldName), 替换值, FieldName)
- 字段类型为
number/currency
时:BLANKVALUE(FieldName, "替换值")
- 字段类型为
date/datetime
时:BLANKVALUE(FieldName, "替换值")
- 字段类型为
lookup/master_detail
时:BLANKVALUE(FieldName._id, "替换ID值")
- 字段类型为
boolean
时:IF(FieldName, ValueA, ValueB)
CASE
根据一系列值检查一个给定表达式。如果表达式等于其中一个值,则返回相应结果。如果它不等于任何值,则返回其他结果。
使用: CASE(表达式,值1, 结果1, 值2, 结果2,...,其他结果),用要与所指定的每个值进行比较的字段或值替换表达式。必须用相等的值替换每个值和结果以返回结果项。当表达式不等于任何值时,用您希望返回的值替换其他结果。
参数:
- 表达式:
text/number/currency/percent/date/datetime/select
要与所指定的每个值进行比较的字段或值。 - 值1:
text/number/currency/percent/date/datetime
第一个要与第一个参数值进行比较的值。 - 结果1:
text/number/currency/percent/date/datetime
当第一个参数值等于参数“值1”时,函数返回该结果值。 - 值2:
text/number/currency/percent/date/datetime
第二个要与第一个参数值进行比较的值。 - 结果2:
text/number/currency/percent/date/datetime
当第二个参数值等于参数“值2”时,函数返回该结果值。 - ...
- 其他结果:
text/number/currency/percent/date/datetime
当表达式不等于之前参数中的任何值时,函数返回该结果值。
返回值: 与传入的最后一个参数一样的数据类型
公式字段示例:
1.个案未处理的天数
这是一个自定义公式字段 Days Open 的示例,使用该示例可根据个案未处理的天数显示不同的文本:
CASE(Days_Open__c, 3, "Reassign", 2, "Assign Task", "Maintain")
显示下面的文本:
- 为任何三天未处理的个案显示“Reassign”(重新指定)。
- 为任何有两天未处理的个案显示“Assign Task”(分配任务)。
- 为所有其他个案显示“Maintain”(维护)。
2.上次活动的月份
此公式字段显示上次活动的月份,如果没有活动,则显示“None”(无)。
CASE(MONTH(LastActivityDate),
1, "January",
2, "February",
3, "March",
4, "April",
5, "May",
6, "June",
7, "July",
8, "August",
9, "September",
10, "October",
11, "November",
12, "December",
"None")
默认值示例:
1.折扣率
使用下面的默认值公式,可以根据业务机会创建人所在的部门在业务机会中插入另一个折扣率:
CASE(User.Department, "IT", 0.25, "Field", 0.15, 0)
在本示例中,该公式在“IT”部门的用户所创建的所有业务机会上插入了 25% 的折扣率,或在“Field”部门的人员所创建的所有业务机会上插入了 15% 的折扣率。如果创建者不属于其中任何一个部门,则折扣率为零。这是业务机会中使用标准用户字段 Department(部门)的自定义百分比字段。
\n 2.产品语言
您可能希望将产品与其语言关联起来,以便用户了解要包含的文档或适配器的类型。使用下面的默认值公式可根据创建某产品的用户所属的国家自动设置该产品的语言。在本示例中,如果用户所属国家是“Japan”(日本),则默认值为“Japanese”(日语),如果用户所属国家是“US”(美国),则默认值为“English”(英语)。如果两者都不是,则会将默认值“unknown”(未知)插入产品语言字段。
CASE($User.Country , "Japan", "Japanese", "US", "English","unknown")
■ 请确保您的值1
、值2
等表达式属于相同的数据类型,且必须与第一个参数值数据类型一致。
■ 请确保您的结果1
、结果2
等表达式以及最后的其他结果
表达式属于相同 的数据类型,但是不必与第一个参数值数据类型一致,且它们往往不一致。
■ CASE 函数中不能包含返回布尔类型,即真或假的参数值,而应当确保真或假表达式返回被支持的数据类型,例如:
CASE(1, IF(ISPICKVAL(Term__c,"12"), 1, 0), 12 * Monthly_Commit__c, IF(ISPICKVAL(Term__c,"24"), 1, 0), 24 * Monthly_Commit__c, 0)
在该公式中,Term(期限)是一个选项列表字段,当它包含表示真的值 1 时,将与“每月提交量”相乘。
■ 需包含其他结果值。
■ 如果任何表达式返回一个错误,那么,即使其他表达式返回的值正确,CASE
函数也将返回一个错误。例如,在CASE(Field__c,"Partner", "P", "Customer", "C", LEFT(Field__c, -5))
公式中,即使其中字段的值是“Partner”(合作伙伴)或“Customer”(客户),该公式也会由于上一条语句不合逻辑而返回一个错误。
■ 如果 CASE 函数中的字段为空,它将返回其他结果值。例如,如果 Days Open(未处理天数)字段为空、0 或者 2 和 3 以外的任何值,CASE(Days_Open__c, 3, "Reassign", 2, "Assign Task", "Maintain")
公式将显示“Maintain”(维护)。
■ 使用 CASE 函数可以确定选项列表值是否等于特定的值。例如,当 Term(期限)为 12 时,CASE(Term__c, "12", 12*Monthly_Commit__c, "24", 24 * Monthly_Commit__c, 0)
公式将 Monthly Commit(每月提交量)乘以 12;当 Term(期限)为 24 时,该公式将 Monthly Commit(每月提交量)乘以 24。否则,结果为零。
- CASE函数中的任何参数都不支持布尔类型值,这不只表示第一个参数及后续用于比较值的其他参数不能是布尔类型值,最后一个参数 也一样不支持布尔类型值,也就是说整个函数的返回值不可能是布尔类型值。
- 表达式参数,即传入的第一个参数支持select字段,但是只支持单选的,如果传入多选的select将直接报错。
IF
确定表达式为真或为假。如果为真则返回一个给定值,如果为假则返回另一个值。
使用: IF(逻辑测试, value_if_true, value_if_false)
参数:
- 逻辑表达式:
boolean
最终返回布尔类型值的逻辑表达式。 - value_if_true:
text/number/currency/percent/date/datetime
您希望当表达式为真时所返回的值,支持除布尔类型外的常用字段类型值。 - value_if_false:
text/number/currency/percent/date/datetime
您希望表达式为假时所返回的值,支持除布尔类型外的常用字段类型值。
返回值: 第一个及第二参数中相同的数据类型
公式字段示例:
1.付款逾期
IF(AND(Payment_Due_Date__c < TODAY(),Payment_Status__c = "UNPAID") , "PAYMENT OVERDUE", null)
此公式确定付款到期日期是否已过,以及付款状态是否为“UNPAID”(未付)。如果是,则返回文本“PAYMENT OVERDUE”(付款逾期);如果不是 ,则保持该字段为空。本示例使用名为 Payment Due Date(付款到期日期)的自定义日期字段和一个名为 Payment Status(付款状态)的自定义文本字段。
2.插入税率
使用该默认值公式可根据用户所在城市设置资产的税率。使用以下默认值创建自定义百分比字段:
IF($user.city = "Napa", 0.0750, IF($user.city = "Paso Robles", 0.0725, IF($user.city = "Sutter Creek", 0.0725, IF($user.city = "Los Olivos", 0.0750, IF($user.city = "Livermore", 0.0875, null ) ) ) ))
- 请确保您的 value_if_true 和 value_if_false 表达式属于相同的数据类型,且不为布尔类型值。
- IF函数不支持返回值为布尔类型的情况,即第二个及第三个参数不能是布尔类型。
ISBLANK
判断表达式是否具有值,如果没有值则返回 TRUE(真)。如果它包含一个值,则该函数返回 FALSE(假)。
使用: ISBLANK(表达式)
参数: text/number/date/datetime/select
您希望计算的表达式。
返回值: 布尔
(IF(ISBLANK(Maint_Amount__c), 0, 1) + IF(ISBLANK(Services_Amount__c), 0,1) + IF(ISBLANK(Discount_Percent__c), 0, 1) + IF(ISBLANK(Amount), 0, 1) + IF(ISBLANK(Timeline__c), 0, 1)) / 5
此公式可提取一组字段,并计算人员所用的百分比。此公式字段检查五个字段以查看它们是否为空。如果为空,则该字段计数为 0。对于任何包含一个值的字段计数“1”,且该总和除以五(计算的字段数)。此公式需要您选中“空白字段处理”下面的将空白字段视为空白选项,否则公式中的ISBLANK会始终返回FALSE。
■ 请不要用MyDateTime__c == null
这种表达式判断空值,而应该使用ISBLANK(MyDateTime__c)
。
■ 如果字段包含字符、空白或零,则字段不为空。例如,如果字段包含使用空格键插入的空格,则该字段不为空。
■ 如果字段没有值,则使用 BLANKVALUE 函数返回指定表达式;如果您只想检查字段是否有值,则使用 ISBLANK 函数。
■ 如果您对数值字段使用该函数,比如ISBLANK(Amount)
,则字段没有值且配置将空白字段处理为空白时,该函数才返回 TRUE。
■ 因为我们的空白字段处理方式默认值是“将空白字段视为零”,所以低代码中要小心,不配置这个属性时,默认为按0值处理。零代码配置时问题不大,因为空白字段处理属性是必填的,不存在默认值问题。
■ 对于select字段类型,单选多选语法是一样的,直接传入参数值即可。
ISBLANK函数返回值为布尔类型,但是不支持参数值本身为布尔类型的情况。
- 字段类型为
text/select
时:ISBLANK(FieldName)
。 - 字段类型为
number/currency
时:ISBLANK(FieldName)
,但是只有配置将空白字段处理为空白时才有效,否则永远返回false。 - 字段类型为
date/datetime
时:ISBLANK(FieldName)
。 - 字段类型为
lookup/master_detail
时:ISBLANK(FieldName._id)
。 - 字段类型为
boolean
时:FieldName
。
NOT
对于 TRUE(真)返回 FALSE(假),对于 FALSE(假)返回 TRUE(真)。
使用: NOT(逻辑表达式)
参数: boolean
您希望计算的表达式。
IF(NOT(Status = "Closed"), ROUND(NOW()-CreatedDate, 0), null)
检查变量是否未处理;如果是,则通过从当前日期和时间减去创建日期和时间来计算它未被处理的天数。结果是舍入为零小数位的未处理天数。如果变量已处理,则此字段为空。
OR
如果任何表达式为真,则返回 TRUE(真)。如果所有表达式均为假,则返回 FALSE(假)。使用此函数作为运算符 || (OR) 的备选。
使用: OR(逻辑1,逻辑2...)
参数:
- 逻辑表达式1:
boolean
您希望计算的返回布尔类型值的公式表达式1。 - 逻辑表达式2:
boolean
您 希望计算的返回布尔类型值的公式表达式2。 - ... 更多返回布尔类型值的其他表达式。
返回值: 布尔
IF(OR(Priority="High",Status="New"), ROUND(NOW()-CreatedDate, 0), null)
如果个案 Status(状态)为“New”(新建)或 Priority(优先级)为“High”(高),则此公式返回个案未被处理的天数。如果个案是今天打开的,则该字段显示零。
数学函数
ABS
计算一个数字的绝对值。数字的绝对值是不含正、负号的数字。
使用: ABS(数字)
参数: number
带有您希望删除的符号的合并字段、表达式或其他数值。
返回值: 数值
ABS(ExpectedRevenue)
计算 Expected Revenue(预期收入)金额的正值,而无论其为正还是为负。
CEILING
将数字向上四舍五入为最接近的整数;如果是负数,先把正数部分舍入为最接近的整数然后加上负号前缀。
使用: CEILING(数字)
参数: number
您希望舍入的字段或表达式。
返回值: 数值
CEILING(2.3)
返回 3,即 2.3 向上舍入为最接近的整数。
CEILING(-2.3)
会返回 -3,即 -2.3 舍入为 0 以下的最接近的正整数后加上负号前缀。
EXP
返回一个值,该值等于所指定数字的 e 幂。
使用: EXP(数字)
参数: number
一个数字字段或值(如 5)。
返回值: 数值
EXP(3)
此公式返回一个值,该值等于 e 的三次幂。
Principal__c EXP(Rate__c Years__c)
此公式基于本金的自定义货币字段、利率的自定义百分比字段和年份的自定义数字字段计算复利。
FLOOR
返回向下舍入为最接近整数的数字;如果是负数,按整数部分舍入后加负号。
使用: FLOOR(数字)
参数: number
一个数字字段或值(如 5.245)。
返回值: 数值
FLOOR(2.5)
返回 2,即 2.5 向下舍入为最接近的整数。
FLOOR(-2.5)
会返回 -2,即 -2.5 舍入为 0 以上的负数。
LN
返回一个指定数值的自然对数。自然对数以常数 e(值为 2.71828182845904)为底。
使用: LN(数字)
参数: number
您希望获得其自然对数的字段或表达式。注意:LN 函数是 EXP 函数的反函数。
返回值: 数值
LN(10)
返回 10 的自然对数,即 2.30。
LN(Value__c)
返回名为 Value(值)的自定义数字字段的自然对数。
LOG
返回数字以 10 为底的对数。
使用: