Account 对象中有一个文本字段 Editor__c,Contact 对象中有一个查找字段 User__c。一旦我从 User__c 查找字段中选择一个值并保存它,如果配置文件是 Editor
,则相同的值应该在 Editor__c 字段中自动更新我尝试了流程和触发器,但找不到任何解决方案
在 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();
}
}
}