在保存之前根据另一个对象中的记录验证记录 - Salesforce

Validate a record before against the records in another Object before saving - Salesforce

我有一个要求,在机会记录详细信息页面中有客户、代理、销售所有者、客户经理字段,还有另一个自定义对象名称数据组合,它存储所有记录的数据以及所有可能的组合允许出现在上述机会字段中。

当用户在商机中填充客户、代理商、销售负责人和客户经理字段并单击保存时,应根据自定义对象中的记录验证这些字段中的数据。如果所有这些字段的组合与自定义对象中的任何行都不匹配,则不应保存记录,并应抛出或显示错误消息。

有人可以告诉我是否可以使用配置或 Apex 在 Salesforce 中实施此场景?如果是,怎么做?

纯配置方式:

  1. /你确定它必须使用辅助对象吗?您是否考虑过依赖选项列表或查找过滤器(如果其中一些是查找),那么,如果用户输入无效组合但所有字段都是必需的 - 他们将无法保存?

  2. 假设它不能是依赖选项列表:如果您将 Data_combine__c.Name 设置为文本字段(不是自动编号)并使用这些中的值填充它(使用工作流?)领域。因此,如果客户 =“Acme Ltd”,代理商 =“纽约办公室”,销售负责人 =“John Doe”,客户经理 =“Joe Bloggs”,那么名称将是“Acme Ltd;纽约办公室;John Doe;Joe Bloggs” “

那么您应该能够在验证规则中使用 VLOOKUP 函数。有很多博客文章和带有示例的 Youtube 视频。这里明显的问题是它必须与限制为 80 个字符的 Name 字段进行比较。如果您的公司名称太长,效果不佳。

  1. 最坏的情况下,您可以将其编码为 before insert, before update 机会触发。从 trigger.new 收集所有字段值,运行 针对数据组合的查询,也许构建一个助手 Map<String, Data_Combine__c>,其中键的结构类似于 Name 想法(但没有80 个字符限制)并比较?