我正在尝试做一些简单的事情(我希望如此)。我有两个对象: Contact和Career_Path__c Contact有一个字段: Currency__c (picklist) Career_Path__c有一个字段: Next_Currency__c (picklist)这两个对象通过从Career_Path__c到Contact的循环关系相互关联
每次创建新的Career_Path__c记录时,我都会尝试更新Next_Currency__c字段。这似乎不起作用。谢谢你的建议。
trigger Trigger_dynPicklist_2 on Contact (after insert) {
Map<Id, String> contactIdToCareerPathMap = new Map<Id, String>();
for (Contact c : Trigger.new) {
if (String.isNotBlank(c.Id)) {
//System.debug('El contacto tiene id: '+c.Id);
contactIdToCareerPathMap.put(c.Id, c.Currency__c);
}
}
List<Career_Path__c> careerPathToUpdate = [SELECT Id, Next_Currency__c, Contact__c
FROM Career_Path__c
WHERE Contact__c IN :contactIdToCareerPathMap.keySet()
];
if(careerPathToUpdate.size() > 0){
//System.debug('Tiene hijos');
for (Career_Path__c career : careerPathToUpdate) {
//System.debug('hijos: '+ career.id);
career.Next_Currency__c = contactIdToCareerPathMap.get(career.Contact__c);
}
update careerPathToUpdate;
}}
发布于 2021-07-07 16:54:28
当您实际需要在Career_Path__c SObject上设置触发器时,您正在尝试设置触发器。您的代码应该如下所示,以实现从相关联系人Currency__c自动填充触发器(还请注意,触发器现在将是BEFORE insert,因此您不需要再次更新记录):
trigger Trigger_dynPicklist_2 on Career_Path__c (before insert) {
Set<Id> relatedContactsIds = new Set<Id>();
for (Career_Path__c path : Trigger.new) {
if (path.Contact__c != null) {
relatedContactsIds.add(path.Contact__c);
}
}
Map<Id, Contact> relatedContactsMap = [SELECT Id, Currency__c FROM Contact WHERE Id IN :relatedContactsIds AND Currency__c != NULL];
for (Career_Path__c path : Trigger.new) {
if (path.Contact__c != null && relatedContactsMap.containsKey(path.Contact__c)) {
path.Next_Currency__c = relatedContactsMap.get(path.Contact__c).Currency__c;
}
}
}还要注意,当联系人刚创建时(并且您在插入时触发),它不能有相关的Career_Path__c对象。
https://stackoverflow.com/questions/68269278
复制相似问题