学习目标
- 描述引用选取列表字段的公式的用例。
- 在公式字段中使用选择列表功能。
- 创建一个引用选项列表字段的公式。
在公式中使用选取列表的简介
选项列表字段允许您从预先填充的列表中选择一个值。虽然您无法撰写返回结果列表的公式,但您可能必须在公式字段中引用选取列表。
假设您需要验证规则,要求用户填写说明,如果他们选择“其他”作为帐户的类型。此验证规则公式要求用户填写文本字段“其他类型”(如果他们将帐户的“类型”设置为“其他”)。
ISPICKVAL(Type, "Other") &&
ISBLANK(Other_Type__c)
常见的选项列表函数和操作符
三个函数将picklist值作为所有公式字段中的参数:ISPICKVAL(),CASE()和TEXT()。
如果picklist_field的值与text_value匹配,则ISPICKVAL(picklist_field,text_value)返回true,否则返回false。您可以将ISPICKVAL()与PRIORVALUE()结合使用。您可以在分配规则,验证规则,字段更新和工作流程规则中使用此函数来查找字段的先前值。
例如,此验证规则可防止用户将案例的类型从先前选定的值更改为空白。
NOT(ISPICKVAL(PRIORVALUE(Type), "")) &&
ISPICKVAL(Type, "")
CASE(Type,
"Electrical", 1,
"Electronic", 2,
"Mechanical", 3,
"Structural", 4,
"Other", 5,
5)
"This case is " & TEXT(Status)
在公式中使用选项列表字段
基于选择列表创建验证规则
选项列表值通常决定了记录中的哪些其他字段是必需的。 ISPICKVAL()和CASE()可用于创建验证规则,以检查是否选择了某个选项列表值。例如,假设您希望用户在将案例的“状态”选项列表值更改为“已升级”时输入原因。
首先,在Case对象上创建自定义文本字段升级原因。
- 在安装程序中,使用快速查找框来查找 Object Manager.
- 点击 然后单击 New.
- 选择 Text Area 并单击 Next.
- 在 Field Label, 输入 Reason for Escalating.字段名称自动填充。
- 点击 Next.
- 再次单击 Next 然后单击 Save.
现在使用状态选项列表字段来设置升级原因的验证规则。
- 单击新创建的升级原因字段。
- 在验证规则下,单击 New.
- 在 Rule Name, 输入 Reason_Required.
- 在 Error Condition Formula, 输入以下验证规则:
AND( ISPICKVAL(Status, "Escalated"), ISBLANK(Reason_for_Escalating__c) )
- 在 Error Message, 输入Please enter a reason for changing the case status to Escalated.
- 点击 Save.
验证规则确保如果状态设置为“升级”,升级原因不为空白。通过将案例状态更新为升级并保存记录来测试公式,而不输入升级原因。该窗体显示在升级原因字段下的错误消息。
指定联系人的优先级
如果您希望根据关联的帐户评分为联系人分配优先级,那么选项列表字段会怎样?对于此公式,我们使用联系人的帐户评级的交叉对象参考以及我们在复选框公式中使用基本逻辑中创建的行政复选框公式字段。 Executive是否检查联系人的标题是否包含“Executive”,“President”或“Chief”等字样。
因为有三种可能的账户评级 – 热,温或冷 – 以及执行检查或未检查的两种选择 – 总共有六种情况。我们将使用CASE()根据以下条件为每种可能性分配优先级。
Account.Rating | Is_Executive_c | 优先级 |
---|---|---|
Hot | Yes | 1 |
Hot | No | 1 |
Warm | Yes | 1 |
Warm | No | 2 |
Cold | Yes | 2 |
Cold | No | 3 |
在名称为Priority并且类型为Number的联系人对象上创建一个公式字段。
- 在安装程序中,使用快速查找框来查找 Object Manager.
- 点击 然后单击 New.
- 选择 Formula 并单击 Next.
- 在 Field Label, 输入 Priority. 字段名称自动填充。
- 选择 Number, 并将小数位数更改为0
- 点击 Next.
- 输入以下公式:
CASE(Account.Rating, "Hot", 1, "Warm", IF(Is_Executive__c, 1, 2), "Cold", IF(Is_Executive__c, 2, 3), 3)
选项列表示例
- 此公式根据自定义选项列表字段合同状态和自定义日期字段合同激活日期返回帐户被激活后的天数。如果合同状态未激活,则该字段为空。
IF(ISPICKVAL(Contract_Status__c, "Activated"), TODAY() - Contract_Activated_Date__c, null)
- 此公式在合同对象上使用自定义日期字段Payment Due Date和自定义选项列表字段Payment Status以及Paid和Unpaid选项。如果“付款状态”为“未付”且已超过付款到期日,公式字段将显示逾期付款!否则,该字段为空。
IF(AND(Payment_Due_Date__c < TODAY(), ISPICKVAL(Payment_Status__c, "UNPAID")), "Payment overdue!", null)
- 如果有人试图将潜在客户的状态从“已关闭 – 已转换”或“关闭 – 未转换”更改为“打开 – 未联系”,此验证规则使用ISPICKVAL()和PRIORVALUE()显示错误。
ISPICKVAL(Status, "Open - Not Contacted") && BEGINS(TEXT(PRIORVALUE(Status)), "Closed")
挑选清单的常见错误
-
唯一可以将选取列表字段作为所有公式字段中的参数的函数是ISPICKVAL(),CASE()和TEXT()。在其他函数中使用选项列表值会导致错误。例如,此复选框公式字段旨在显示一个复选框,用于指示潜在顾客源是否是“合作伙伴推荐”。等号运算符(=),但是,不支持选项列表字段,并且此公式导致一个错误。
LeadSource = "Partner Referral"
ISPICKVAL(LeadSource, "Partner Referral")
TEXT(LeadSource) = "Partner Referral"