跨多对象的Salesforce校验:编写规则确保各对象Billing Entity一致
以下针对 Quote、Quote Line、Opportunity、Order 四个对象分别编写校验规则,确保它们的 Billing Entity 始终保持一致。假设所有对象的 Billing Entity 字段 API 名称为 Billing_Entity__c,关联关系字段使用标准或常见自定义字段名。
1. Quote 对象校验规则
规则名称:Quote_Billing_Entity_Consistency
激活条件:始终激活
错误公式:
OR( // 与关联 Opportunity 的 Billing Entity 不一致 Billing_Entity__c <> Opportunity.Billing_Entity__c, // 存在任意 Quote Line 的 Billing Entity 与当前 Quote 不一致 EXISTS( SELECT Id FROM QuoteLineItems WHERE Billing_Entity__c <> Billing_Entity__c ), // 与关联 Order 的 Billing Entity 不一致(若存在关联 Order) AND( OrderId != null, Order.Billing_Entity__c <> Billing_Entity__c ) )
错误提示:Quote 的 Billing Entity 必须与关联的 Opportunity、所有 Quote Line 及关联 Order 的 Billing Entity 保持一致
2. Quote Line 对象校验规则
规则名称:QuoteLine_Billing_Entity_Consistency
激活条件:始终激活
错误公式:
OR( // 与所属 Quote 的 Billing Entity 不一致 Billing_Entity__c <> Quote.Billing_Entity__c, // 与关联 Opportunity(通过 Quote)的 Billing Entity 不一致 Billing_Entity__c <> Quote.Opportunity.Billing_Entity__c, // 与关联 Order(通过 Quote)的 Billing Entity 不一致(若存在) AND( Quote.OrderId != null, Billing_Entity__c <> Quote.Order.Billing_Entity__c ) )
错误提示:Quote Line 的 Billing Entity 必须与所属 Quote、关联 Opportunity 及 Order 的 Billing Entity 保持一致
3. Opportunity 对象校验规则
规则名称:Opportunity_Billing_Entity_Consistency
激活条件:始终激活
错误公式:
OR( // 存在任意关联 Quote 的 Billing Entity 不一致 EXISTS( SELECT Id FROM Quotes WHERE Billing_Entity__c <> Billing_Entity__c ), // 存在任意关联 Order 的 Billing Entity 不一致 EXISTS( SELECT Id FROM Orders WHERE Billing_Entity__c <> Billing_Entity__c ) )
错误提示:Opportunity 的 Billing Entity 必须与所有关联 Quote、Order 的 Billing Entity 保持一致
4. Order 对象校验规则
规则名称:Order_Billing_Entity_Consistency
激活条件:始终激活
错误公式:
OR( // 与关联 Opportunity 的 Billing Entity 不一致 Billing_Entity__c <> Opportunity.Billing_Entity__c, // 与关联 Quote 的 Billing Entity 不一致(若存在关联 Quote) AND( QuoteId != null, Billing_Entity__c <> Quote.Billing_Entity__c ), // 关联 Quote 下存在 Quote Line 的 Billing Entity 不一致(若存在关联 Quote) AND( QuoteId != null, EXISTS( SELECT Id FROM Quote.QuoteLineItems WHERE Billing_Entity__c <> Billing_Entity__c ) ) )
错误提示:Order 的 Billing Entity 必须与关联 Opportunity、Quote 及所有 Quote Line 的 Billing Entity 保持一致
注意事项
- 请根据实际环境中字段的 API 名称调整公式中的字段引用,确保字段名准确无误。
- 若某些对象间的关联关系并非必填(例如 Quote 不一定关联 Order),公式中的
AND(关联字段 != null, ...)逻辑可避免空值导致的错误校验。 - 校验规则会在记录创建或编辑时触发,阻止不符合一致性要求的记录保存。
内容的提问来源于stack exchange,提问作者sriniD

