如何通过记录标识字段获取对应ID?关联Account与Case记录方案咨询
实现方案
该需求为Salesforce平台常见的外部数据关联标准场景,可通过以下两类方案实现:
方案1:低代码流实现(优先推荐,无需编码)
- 新建记录触发流,触发对象选择Case,触发条件设置为「仅当记录创建时」运行
- 新增
Get Records节点,查询对象选择Account,过滤规则为AccountNumber = 触发Case记录中存储外部传入账号的自定义字段(请替换为你实际的字段API名,例:External_Account_Number__c),配置仅返回1条匹配记录 - 新增
Update Records节点,选择当前触发的Case记录,将Case的AccountId字段赋值为上一步查询到的Account记录ID - 调试无误后激活流即可生效
方案2:Apex触发器实现(适合有复杂扩展逻辑的场景)
在Case对象上创建Before Insert触发器,示例代码如下:
trigger CaseAssociateAccount on Case (before insert) { // 收集所有Case传入的账号编号 Set<String> incomingAccNumSet = new Set<String>(); for(Case newCase : Trigger.new) { if(String.isNotBlank(newCase.External_Account_Number__c)) { incomingAccNumSet.add(newCase.External_Account_Number__c); } } // 批量查询匹配的Account,构建账号到ID的映射 Map<String, Id> accNumToIdMap = new Map<String, Id>(); for(Account acc : [SELECT Id, AccountNumber FROM Account WHERE AccountNumber IN :incomingAccNumSet]) { accNumToIdMap.put(acc.AccountNumber, acc.Id); } // 批量给Case赋值关联的AccountID for(Case newCase : Trigger.new) { if(accNumToIdMap.containsKey(newCase.External_Account_Number__c)) { newCase.AccountId = accNumToIdMap.get(newCase.External_Account_Number__c); } } }
注意事项
- 需提前在Case对象创建自定义字段存储外部传入的account number,确保外部源写入该字段的权限配置正确
- 建议给Account对象的
AccountNumber字段添加唯一约束,避免出现一个账号匹配到多条Account记录的异常 - 若存在外部传入不存在的account number的场景,可按需扩展逻辑:例如给Case打异常标记、写入错误日志、触发告警通知等
内容的提问来源于stack exchange,提问作者Raghu
相关产品推荐
相关产品推荐

