You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过记录标识字段获取对应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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:06