validation - 在保存之前针对另一个对象中的记录验证之前的记录 - Salesforce
问题描述
我有一个要求,其中商机记录详细信息页面中有客户、代理商、销售负责人、客户经理字段,并且还有另一个自定义对象名称数据组合,用于存储所有记录的数据以及上述允许的所有可能组合机会领域。
当用户在 Opportunity 中填充 Customer、Agency、Sales Owner 和 Account Manager 字段并单击 Save 时,应根据自定义对象中的记录验证这些字段中的数据。如果所有这些字段的组合与自定义对象中的任何行都不匹配,则不应保存记录并应抛出或显示错误消息。
有人可以让我知道是否可以使用配置或 Apex 在 Salesforce 中实施此方案?如果是,如何?
解决方案
纯配置方式:
/你确定它必须使用辅助对象吗?您是否考虑过依赖选项列表或查找过滤器(如果其中一些是查找),以及如果用户输入无效组合但所有字段都是必需的 - 他们将无法保存?
假设它不能是依赖选项列表:如果您将 设置
Data_combine__c.Name
为文本字段(不是自动编号)并使用这些字段中的值填充它(使用工作流?)。因此,如果客户 =“Acme Ltd”,代理机构 =“纽约办事处”,销售负责人 =“John Doe”,客户经理 =“Joe Bloggs”,那么名称将是“Acme Ltd;New York Office;John Doe;Joe Bloggs” "
然后你应该能够VLOOKUP
在验证规则中使用函数。有很多带有示例的博客文章和 Youtube 视频。这里明显的问题是它必须与Name
限制为 80 个字符的字段进行比较。如果您的公司名称很长,那将无法正常工作。
- 所以最坏的情况你可以将它编码为
before insert, before update
机会的触发器。从 收集所有字段值trigger.new
,对 Data Combine 运行查询,也许构建一个助手Map<String, Data_Combine__c>
,其中 key 的结构类似于Name
想法(但没有 80 个字符的限制)并进行比较?
推荐阅读
- python-3.x - 根据来自其他数据框 pandas 的信息添加列
- javascript - Ajax 问题基于类别在 foreach 内加载更多 CPT 循环请求
- c++ - 从 CMake 中的 lib 目录加载共享库?
- mysql - 从本地机器(Ubuntu 14.04 LTS)推入 docker 时出现 mysql 问题
- javascript - Coldfusion websocket在将ws更改为wss协议时无法创建websocket握手
- c++ - 将函数指针数组中的函数指针作为模板参数传递
- sql-server - 如何将动态多个输入值传递给 SQL Server 2014 中的 LIKE 运算符?
- css - 使用 d-none d-lg-block 时引导程序无法切换
- hibernate - 执行 DDL 时出错“在 Spring Data JPA 中创建表?
- javascript - NodeJs 中的 AES/CBC/PKCS5Padding