如何使用子字段的查找字段值自动填充父字段

问题描述 投票:0回答:1

Account 对象中有一个文本字段 Editor__c,Contact 对象中有一个查找字段 User__c。一旦我从 User__c 查找字段中选择一个值并保存它,如果配置文件是 Editor

,则相同的值应该在 Editor__c 字段中自动更新

我尝试了流程和触发器,但找不到任何解决方案

triggers salesforce lookup soql sfdc
1个回答
0
投票

在 1 个循环中收集 id。检查他们的个人资料是否正确。再次循环并更新帐户。 您必须考虑如果有人同时更新 2 个联系人会发生什么,哪个值应该获胜。

trigger HiStack on Contact(after update){
Set<Id> candidates = new Set<Id>();
for(Contact c : trigger.new){
    Contact old = trigger.oldMap.get(c.Id);
    if(c.User__c != old.User__c && c.User__c != null){
        candidates.add(c.User__c);
    }
}
if(!candidates.isEmpty()){
    Map<Id, User> editors = new Map<Id, User>([SELECT Id FROM User WHERE Id IN :candidates AND Profile.Name = 'Editor']);
    Map<Id, Account> accountsToUpdate = new Map<Id, Account>();
    if(!editors.isEmpty()){
        for(Contact c : trigger.new){
            if(c.User__c != old.User__c && editors.containsKey(c.Id)){
                accountsToUpdate.put(c.AccountId, new Account(Id = c.AccountId, Editor__c = c.User__c));
        }
        update accountsToUpdate.values();
    }
}

}
© www.soinside.com 2019 - 2024. All rights reserved.