验证规则示例
请按您的实际目的,查看以下有参考价值的验证规则示例。用户保存记录之前,验证规则会验证用户在记录中输入的数据是否符合您指定的标准。 有关这些示例中使用的任何公式函数的详细信息,请参阅 公式运算符和函数。
示例客户验证规则
客户编号为数字
- 说明: 验证非空客户编号是否为数字。
- 公式:
- 错误消息:客户编号不为数字。
- 错误位置:客户编号
提示
华炎魔方公式引擎暂时不支持ISNUMBER函数,可以用正规代替,请参考 REGEX ,该示例可替换为:
客户编号长度
- 说明: 验证客户编号恰好是 7 位数字。数字 7 仅表示示例性说明。您可以将其更改为您喜欢的任意数字。
- 允许为空时公式:
- 不允许为空时公式:
或
- 错误消息:客户编号必须是 7 位数字。
- 错误位置:客户编号
年收入范围
- 说明: 验证客户年收入不是负数且不超过 1000 亿美元。设计该极限的目的是发现打字错误。
- 公式:
- 错误消息:年收入不能超过 1000 亿。
- 错误位置:年收入
示例社区验证规则
防止问题中的冒犯性语言
- 说明:防止用户在提问时在标题和说明字段中输入冒犯性语言。
- 公式:
OR(CONTAINS(Title, 'darn'), CONTAINS(Body, 'darn'))
- 错误消息:问题标题或说明包含冒犯性语言。
防止回复中的冒犯性语言
- 说明:防止用户在回复问题时输入冒犯性语言。
- 公式:
OR(CONTAINS(Body, 'darn'), CONTAINS(Body, 'dang'))
- 错误消息:回复包含冒犯性语言。
防止意见中的冒犯性语言
- 说明:防止用户在发布意见时在标题和说明字段中输入冒犯性语言。
- 公式:
OR(CONTAINS(Title, 'darn'), CONTAINS(Body, 'darn'))
- 错误消息:意见标题或说明包含冒犯性语言。
防止意见评论中的冒犯性语言
- 说明:防止用户发布评论时输入冒犯性语言。
- 公式:
OR(CONTAINS(CommentBody , 'darn'), CONTAINS(CommentBody, 'dang'))
- 错误消息:评论包含冒犯性语言。
示例联系人验证规则
邮寄地址字段必填
- 说明:验证已提供联系人的邮寄地址 - 街道、邮寄地址 - 城市和邮寄地址 - 国家/地区。
- 公式:
- 错误消息:“邮寄地址 - 街道”、“邮寄地址 - 城市”和“邮寄地址 - 国家/地区”必填。
- 错误位置:右上角
邮寄地址 - 街道必填
- 说明:验证已提供联系人的邮寄地址 - 街道。
- 公式:
ISBLANK( MailingStreet )
- 错误消息:“邮寄地址 - 街道”必填。
- 错误位置:邮寄地址 - 街道
邮寄地址 - 邮政编码
- 说明:当邮寄地址 – 国家/地区为 USA 或空白时,验证联系人的邮寄地址 – 邮政编码的格式为 99999 或 99999-9999。
- 公式:
- 备注 该示例把空白国家理解为 US。要将此示例用于其他国家,请删除检查国家字段长度的子句。而且,验证规则条件是区分大小写的,所以只有当国家为空或“USA”全部为大写字母时,才会强制执行该规则。当国家为“usa”时,不会强制执行该规则。
提示
您还可使用正则表达式来验证邮政编码;有关使用正则表达式的公式示例,请参阅REGEX
- 错误消息:邮政编码的格式必须是 99999 或 99999-9999。
- 错误位置:邮寄地址 - 邮政编码
电话号码具有国际格式
- 说明:验证电话号码以表示国家代码的加号 (+) 开头。注意,该验证规则与十位数规则冲突。
- 公式:
LEFT(Phone, 1) <> "+"
- 错误消息:电话号码必须以“+”(国家代码)开头。
- 错误位置:电话
美国电话号码包含十位数字
- 说明:验证电话号码的格式是 (999) 999-9999。这通过使用 REGEX 函数检查数字是否采用 (999) 999-9999 格式的十位数字工作。
- 公式:
NOT(REGEX(Phone, "\\D*?(\\d\\D*?){10}"))
- 错误消息:美国电话号码必须为此格式:(999) 999-9999。
- 错误位置:电话
示例跨对象验证规则
折扣必须在范围内
本例包含业务机会产品上的三个验证规则。以下示例一起帮助您管理产品折扣额,它们需要业务机会产品上的自定义字段项目折扣。这些示例还需要您使用价格手册,并自定义产品系列字段以包含下列值:软件、咨询和培训。
软件折扣
- 说明:预防用户保存折扣超过 10% 的软件产品。
- 公式:
AND(Line_Discount__c > 0.10, Product2.Family = "Software")
- 错误消息:软件产品折扣必须等于或低于 10%。
- 错误位置:项目折扣
咨询折扣
- 说明:预防用户保存折扣超过 15% 的咨询产品。
- 公式:
AND(Line_Discount__c > 0.15, Product2.Family = "Consulting")
- 错误消息:咨询产品折扣必须等于或低于 15%。
- 错误位置:项目折扣
培训折扣
- 说明:预防用户保存折扣超过 20% 的培训产品。
- 公式:
AND(Line_Discount__c > 0.20, Product2.Family = "Training")
- 错误消息:培训产品折扣必须等于或低于 20%。
- 错误位置:项目折扣
提示
Product2.Family
是跨对象引用,并且是一个下拉框字段。
防止更改已关闭业务机会上的业务机会产品
- 说明:预防用户在业务机会关闭之后编辑业务机会产品,下列验证规则位于业务机会产品上。
- 公式:
OR(Opportunity.StageName = "Closed Won", Opportunity.StageName = "Closed Lost")
- 错误消息:不能更改已关闭业务机会上的业务机会产品。
- 错误位置:右上角
提示
Opportunity.StageName
是跨对象引用,并且是一个下拉框字段。
防止在客户不具备支持时保存个案
- 说明:预防用户为不具备支持的客户保存个案。本例假设您有名为允许支持的自定义客户复选框字段,跟踪客户是否具备支持。
- 公式:
Account.Allowed_Support__c = FALSE
- 错误消息:由于该客户尚未注册支持,因此无法为其创建个案。
- 错误位置:右上角
防止在联系人不再任职公司时保存个案
- 说明:预防用户保存与不再任职公司的联系人关联的未处理个案。本例使用名为不再任职公司的自定义联系人复选框字段。
- 公式:
AND(Contact.Not_Longer_With_Company__c,NOT(IsClosed))
- 错误消息:由于相关联系人不再任职公司,因此无法保存个案。请选择另一个联系人以继续。
- 错误位置:联系人姓名
示例日期验证规则
日期必须为工作日
说明:验证自定义日期字段的值为工作日(不是星期六或星期日)。
公式:
- 错误消息:日期必须为工作日。
- 错误位置:我的日期
提示
My_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
日期必须为周末
- 说明:验证自定义日期字段的值为星期六或星期日。
- 公式:
- 错误消息:日期必须为周末。
- 错误位置:我的日期
提示
My_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
日期必须属于当月
- 说明:验证自定义日期字段包含的日期属于当年当月。
- 公式:
- 错误消息:日期必须属于当月。
- 错误位置:我的日期
提示
My_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
注意
如果需要,请关注TODAY函数对于时区方面的偏差,以防止出现预期不一致的效果,可以参考:有关日期时间和时区的备注
日期必须属于当年
- 说明:验证自定义日期字段包含的日期属于当年。
- 公式:
- 错误消息:日期必须属于当年。
- 错误位置:我的日期
提示
My_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
注意
如果需要,请关注TODAY函数对于时区方面的偏差,以防止出现预期不一致的效果,可以参考:有关日期时间和时区的备注
日期必须是月的最后一天
- 说明:验证名为我的日期的自定义字段是否是月的最后一天。验证方法为:确定下一个月的第一天的日期,然后再减一天。该方法中包括 12 月的特殊情况逻辑。
- 公式:
- 错误消息:日期必须是月的最后一天。
- 错误位置:我的日期
提示
My_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
日期必须位于今天后一年内
- 说明:验证名为后续日期的自定义字段是否位于今天日期后的一年内。此示例假设一年 365 天。(不包括对闰年的处理。)
- 公式:
- 错误消息:后续日期必须位于今天后的一年内。
- 错误位置:后续日期
提示
Followup_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
月中的日不能大于 15
- 说明:验证名为开始日期的自定义字段包含的日期位于指定月的前 15 天内。
- 公式:
- 错误消息:开始日期不能位于月的第 15 天后。
- 错误位置:开始日期
提示
Begin_Date__c
是一个日期类型字段,而不是日期时间类型字段,否则上述公式会报错。
结束日期不能在开始日期之前
- 说明:验证名为结束日期的自定义字段不位于名为开始日期的另外一个自定义字段之前。
- 公式:
- 错误消息:结束日期不能在开始日期之前。
- 错误位置:开始日
提示
Begin_Date__c
与End_Date__c
字段必须同为日期类型或日期时间类型字段,而不可以是不同的字段类型,否则上述公式会报错。
示例数字验证规则
考勤卡必须合计为 40 小时
- 说明:确保用户保存的一个工作周的考勤卡记录不超过 40 个小时。该示例要求自定义对象上有五个自定义字段,每个工作日一个。
- 公式:
- 错误消息:您的合计小时数不能超过 40。
- 错误位置:右上角
数字不能为负数
- 说明:验证名为 Hours Worked 的自定义字段不是负数。
- 公式:
Hours_Worked__c < 0
- 错误消息:Hours Worked 不能小于零。
- 错误位置:Hours Worked
数字必须是偶数
- 说明:验证名为 Ark Passengers 的自定义字段是非负偶数。
- 公式:
- 错误消息:Ark Passengers 必须是正偶数。
- 错误位置:Ark Passengers
数字必须是奇数
- 说明:验证名为 Socks Found 的自定义字段是非负奇数。
- 公式:
- 错误消息:Socks Found 必须是奇数。
- 错误位置:Socks Found
数字必须是五的倍数
- 说明:验证名为 Multiple of 5 的自定义字段是五的倍数。
- 公式:
MOD( Multiple_of_5__c, 5) <> 0
- 错误消息:数字必须是五的倍数。
- 错误位置:Multiple of 5
数字必须是整数
- 说明:验证名为 My Integer 的自定义字段是整数。
- 公式:
FLOOR( My_Integer__c) <> My_Integer__c
- 错误消息:该字段必须是整数。
- 错误位置:My Integer
数字必须介于 -50 和 50 之间
- 说明:验证名为 Volume 的自定义字段介于 -50 和 50 之间。
- 公式:
ABS( Volume__c) > 50
- 错误消息:Volume 必须介于 -50 至 50 之间。
- 错误位置:Volume
数字范围验证
- 说明:验证 Salary Min 和 Salary Max 两个自定义字段之间的范围不大于 20,000 美元。
- 公式:
(Salary_Max__c - Salary_Min__c) > 20000
- 错误消息:工资范围必须在 20,000 美元内。请调整 Salary Max 或 Salary Min 的值。
- 错误位置:Salary Max
百分比必须介于 0 和 100 之间
- 说明:验证名为 Mix Pct 的自定义字段介于 0 和 100% 之间。注意,在公式中,百分比字段是以0到1之前的数值形式存在的(100% 以 1 表示;50% 以 0.5 表示)。
- 公式:
- 错误消息:Mix Pct 必须介于 0 和 100% 之间。
- 错误位置:Mix Pct
示例业务机会验证规则
基于业务机会阶段的有条件必填字段
- 说明:验证当业务机会进入“已结束并赢得客户”或“协商/审核”阶段时是否已提供名为交货日期的自定义字段。
- 公式:
- 错误消息:在该阶段上,交货日期是必填字段。
- 错误位置:交货日期
结束日期不能位于当前月之前
- 说明:验证业务机会的结束日期不位于当前月之前。
- 公式:
- 错误消息:结束日期不能位于当前月之前。
- 错误位置:结束日期
结束日期必须是未来日期
- 说明:确保用户不会将业务机会的结束日期更改为过去的某一天。
- 公式:
SampleDate < TODAY()
- 错误消息:结束日期不能是过去的一天。
- 错误位置:结束日期
业务机会折扣
- 说明:验证自定义折扣百分比字段介于 0 和 40% 之间。
- 公式:
OR(Discount_Rate__c < 0, Discount_Rate__c > 0.40)
- 错误消息:折扣率不得超过 40%。
- 错误位置:折扣率
高质量业务机会必须经过批准才能结束
- 说明:金额超过 50,000 美元的业务机会需要选取名为已批准的自定义复选框字段,然后才能更改为“已结束并赢得客户”阶段或“已结束并失去客户”阶段。为自动化实现该操作,请为已批准复选框设置只读,以便只能通过自定义批准过程才能选取该复选框(Enterprise Edition、Unlimited Edition 或 Performance Edition)。
- 公式:
- 错误消息:所有高质量业务机会必须经过批准才能结束。单击“请求结束”按钮。
- 错误位置:右上角
业务机会金额不能超过 1000 万美元
- 说明:验证业务机会金额是整数且不超过 1000 万美元。设计该极限的目的是发现打字错误。
- 公式:
- 错误消息:金额不能超过 1000 万美元。
- 错误位置:金额
“需求分析”阶段后的业务机会中必须包含产品
- 说明:验证业务机会包含业务机会产品,然后才能将阶段转至“需求分析”之后的阶段。
- 公式:
- 错误消息:必须包含业务机会产品才能进入“需求分析”之后的阶段。
- 错误位置:右上角
提示
HasOpportunityLineItem中主表业务机会上的字段,当其子表业务机会产品汇总数量超过0时会自动更新为TRUE。
业务机会名称格式
- 说明:验证业务机会中包含连字符以符合“[客户] – [金额]”业务机会命名约定的格式。
- 公式:
FIND( " - ", Name ) = 0
- 错误消息:业务机会名称应该使用“[客户] - [金额]”格式。
- 错误位置:业务机会名
提示
类似格式校验这种需求,用正则函数REGEX实现可能更实用,有时也更简单。
防止销售代表将业务机会阶段推后
- 说明:防止销售代表通过自定义批准过程接受业务机会后将阶段“向后”更改为特定值。批准过程将自定义已接受标志复选框设置为“真”。
- 公式:
- 错误消息:该阶段对已接受业务机会无效。
- 错误位置:阶段
已赢得的业务机会的可能性必须为 100%
- 说明:验证已赢得的业务机会的可能性已正确设置为 100%。它适用于数据清理和报告目的。
- 公式:
- 错误消息:已赢得的业务机会的可能性必须为 100%。
- 错误位置:可能性
已失去的业务机会的可能性必须为零
- 说明:验证已失去的业务机会的可能性已正确设置为零。它适用于数据清理和报告目的。
- 公式:
- 错误消息:已失去的业务机会的可能性必须为 0%。
- 错误位置:可能性
项目开始日期
- 说明:验证某个字段是基于其他字段值的有条件必填字段。使用此验证公式可确保用户会为已结束并赢得客户的业务机会提供一个项目开始日期。
- 公式:
- 错误消息:必须为已赢得的业务机会提供一个项目开始日期。
- 错误位置:项目开始日期
示例报价验证规则
如果报价行项目折扣超过 40% 则显示错误
- 备注:如果报价行项目的折扣超过 40%,将显示错误。
- 公式:
Discount > 0.40
- 错误消息:该报价行项目上的折扣不能超过 40%。
- 错误位置:报价上的折扣
示例用户验证规则
可以在公式中输入$user变量来引用当前登录用户的相关信息,作为跨对象公式的一种,你也应该在其后用点符号来扩展引用链,更多请参考关于跨对象公式的提示。
折扣百分比不超过基于角色的极限
- 说明:验证名为折扣百分比的业务机会自定义字段不会超过随用户角色而变化的最大值。默认最大值为 15%。
- 公式:
或
- 错误消息:折扣百分比超出您的角色所允许的极限。
- 错误位置:折扣百分比
提示
以上公式需要给space_users
对象中增加一个类型为相关表的自定义字段role__c
,并且指向一个有最大折扣数max_discount__c
字段的自定义对象“角色”,这样$user.role__c.max_discount
就表示当前登录用户所属角色的最大折扣权限。
支出金额不超过用户的最大许可支出
- 说明:针对名为最大许可支出的自定义用户字段验证名为支出金额的自定义字段。
- 公式:
Expense_Amount__c > $user.max_allowed_expense__c
- 错误消息:金额不超过您的最大许可支出。
- 错误位置:支出金额
提示
以上公式需要给space_users
对象中增加一个类型为百分比的自定义字段max_allowed_expense__c
,这样$user.max_allowed_expense__c
就表示当前登录用户的最大许可支出金额。
只有记录所有人才能更改字段
- 说明:确保只有记录所有人才能更改名为个人目标的自定义字段。
- 公式:
- 错误消息:只有记录所有人才能更改“个人目标”。
- 错误位置:个人目标
只有管理员能够向后调整业务机会结束日期
- 说明:验证业务机会的结束日期不位于当前月之前(除非用户是工作区管理员)。
- 公式:
- 错误消息:结束日期不能位于当前月之前。
- 错误位置:结束日期
其他示例验证规则
强制用户选取“我接受条款”以输入特定值
- 说明:当用户输入超过其带薪假期 (PTO) 剩余可用天数时,使用标记为“我接受条款”的复选框强制用户选取复选框。
- 公式:
- 错误消息:请求会导致 PTO 负剩余天数。您必须接受“PTO 负剩余天数”条款。
- 错误位置:我接受条款
有效币种
- 说明:通过使用币种选项列表验证选定币种是否明确属于贵组织内的有效币种的子集。对于某些特定类型的记录,如果您仅允许应用组织内的某些有效货币,请使用此示例。
- 公式:
- 错误消息:货币必须为 RMB、USD、EUR、GBP 或 JPY。
- 错误位置:币种
有效的信用卡号码
说明:验证名为信用卡号码的自定义文本字段的格式为 9999-9999-9999-9999 或 9999999999999999 数字格式(如果非空)。该模式规定: 四个十进制数字(0-9),然后为连字符号:[0-9]{4}- 重复前面提到的模式三次,即放入 () 并紧跟 {3} 四个十进制数字 (0-9) “或”字符 (|) 允许 16 位十进制数字(0-9),且中间无连字符:[0-9]{16}
公式:
NOT( REGEX( Credit_Card_Number__c , "((([0-9]{4}-){3}[0-9]{4})|[0-9]{16})?"))
错误消息:信用卡号码格式应为:9999-9999-9999-9999 或 9999999999999999。
错误位置:信用卡号码
有效的 IP 地址
- 说明:确保名为 IP 地址的自定义字段具有正确的格式:四组三位十进制数字 (0-255),每组之间以句点格开。
- 公式:
- 错误消息:错误:IP 地址必须为 999.999.999.999 格式,且每个部分为从 0 到 255 的数字。
- 错误位置:IP 地址
提示
上述公式中的正则表达式的前后缀^和$符号可以省略,因为公式中的正则本身就是按全字匹配来的,另外IP地址之前的点号分隔符不可以写成\.或.,因为公式中的正则不支持转义符,需要匹配特殊符号请用中括号包裹。
网址扩展名
- 说明:验证名为网址的自定义字段,以确保其最后四位字符明确属于有效网址扩展名集合。
- 公式:
- 错误消息:网址的扩展名必须为 .com、.org、.net 或 .co.uk。
- 错误位置:网址