公式(4)选项

学习目标

完成本单元后,您将能够:

  • 描述引用选取列表字段的公式的用例。
  • 在公式字段中使用选择列表功能。
  • 创建一个引用选项列表字段的公式。

在公式中使用选取列表的简介

选项列表字段允许您从预先填充的列表中选择一个值。虽然您无法撰写返回结果列表的公式,但您可能必须在公式字段中引用选取列表。

假设您需要验证规则,要求用户填写说明,如果他们选择“其他”作为帐户的类型。此验证规则公式要求用户填写文本字段“其他类型”(如果他们将帐户的“类型”设置为“其他”)。

ISPICKVAL(Type, "Other") &&
ISBLANK(Other_Type__c)
如果当“类型”设置为“其他”时,用户将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, "")

如果Type的先前值不为空且当前值为,则触发验证规则。

CASE()对于根据选取列表的值编写具有不同结果的公式很有用。带有Number返回类型的此公式根据其类型为案例分配优先级。

CASE(Type,
  "Electrical", 1,
  "Electronic", 2,
  "Mechanical", 3,
  "Structural", 4,
  "Other", 5,
5)

该公式将Type与每种情况进行比较,并在发现匹配时指定优先级。电子案例优先级为1,电子案例2,等等。

TEXT()将选取列表值转换为组织主语言的文本值,而不是当前用户的语言。在将选取列表值转换为文本值之后,可以在其上使用文本函数,例如BEGINS()和CONTAINS()。

例如,这个公式将一个案件的状态显示为一个句子。

"This case is " & TEXT(Status)
注意

您不能在多选选项列表上使用TEXT()。公式字段中不推荐多选择选项列表。

在公式中使用选项列表字段

基于选择列表创建验证规则

选项列表值通常决定了记录中的哪些其他字段是必需的。 ISPICKVAL()和CASE()可用于创建验证规则,以检查是否选择了某个选项列表值。例如,假设您希望用户在将案例的“状态”选项列表值更改为“已升级”时输入原因。

首先,在Case对象上创建自定义文本字段升级原因。

  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Case | Fields & Relationships 然后单击 New.
  3. 选择 Text Area 并单击 Next.
  4. Field Label, 输入 Reason for Escalating.字段名称自动填充。
  5. 点击 Next.
  6. 再次单击 Next 然后单击 Save.

现在使用状态选项列表字段来设置升级原因的验证规则。

  1. 单击新创建的升级原因字段。
  2. 在验证规则下,单击 New.
  3. Rule Name, 输入 Reason_Required.
  4. Error Condition Formula, 输入以下验证规则:
    AND(
      ISPICKVAL(Status, "Escalated"),
      ISBLANK(Reason_for_Escalating__c)
    )
  5. Error Message, 输入Please enter a reason for changing the case status to Escalated.
  6. 点击 Save.

验证规则确保如果状态设置为“升级”,升级原因不为空白。通过将案例状态更新为升级并保存记录来测试公式,而不输入升级原因。该窗体显示在升级原因字段下的错误消息。

Users who do not set a Reason for Escalating will see this error message.

指定联系人的优先级

如果您希望根据关联的帐户评分为联系人分配优先级,那么选项列表字段会怎样?对于此公式,我们使用联系人的帐户评级的交叉对象参考以及我们在复选框公式中使用基本逻辑中创建的行政复选框公式字段。 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的联系人对象上创建一个公式字段。

  1. 在安装程序中,使用快速查找框来查找 Object Manager.
  2. 点击 Contact | Fields & Relationships 然后单击 New.
  3. 选择 Formula 并单击 Next.
  4. Field Label, 输入 Priority. 字段名称自动填充。
  5. 选择 Number, 并将小数位数更改为0
  6. 点击 Next.
  7. 输入以下公式:
    CASE(Account.Rating,
      "Hot", 1,
      "Warm", IF(Is_Executive__c, 1, 2),
      "Cold", IF(Is_Executive__c, 2, 3),
    3)
    在这个公式中,我们在更大的CASE()语句中使用IF()语句来更有效地检查所有六种情况。

选项列表示例

  1. 此公式根据自定义选项列表字段合同状态和自定义日期字段合同激活日期返回帐户被激活后的天数。如果合同状态未激活,则该字段为空。
    IF(ISPICKVAL(Contract_Status__c, "Activated"),
      TODAY() - Contract_Activated_Date__c, null)
  2. 此公式在合同对象上使用自定义日期字段Payment Due Date和自定义选项列表字段Payment Status以及Paid和Unpaid选项。如果“付款状态”为“未付”且已超过付款到期日,公式字段将显示逾期付款!否则,该字段为空。
    IF(AND(Payment_Due_Date__c < TODAY(), 
      ISPICKVAL(Payment_Status__c,
      "UNPAID")),
      "Payment overdue!", null)
  3. 如果有人试图将潜在客户的状态从“已关闭 – 已转换”或“关闭 – 未转换”更改为“打开 – 未联系”,此验证规则使用ISPICKVAL()和PRIORVALUE()显示错误。
    ISPICKVAL(Status, "Open - Not Contacted") &&
    BEGINS(TEXT(PRIORVALUE(Status)), "Closed")
    如果用户将关闭状态从关闭状态更改为打开状态,则在尝试保存记录时会看到错误。
    The error message a user sees when they violate the validation rule.

挑选清单的常见错误

  • 唯一可以将选取列表字段作为所有公式字段中的参数的函数是ISPICKVAL(),CASE()和TEXT()。在其他函数中使用选项列表值会导致错误。例如,此复选框公式字段旨在显示一个复选框,用于指示潜在顾客源是否是“合作伙伴推荐”。等号运算符(=),但是,不支持选项列表字段,并且此公式导致一个错误。

    LeadSource = "Partner Referral"
    相反,使用ISPICKVAL()检查选择列表字段的值,或者在使用equals运算符之前使用TEXT()将选取列表值转换为文本。
    ISPICKVAL(LeadSource, "Partner Referral")
    TEXT(LeadSource) = "Partner Referral"