Копирование вложений из родительского объекта в дочерний объект при изменении поля - PullRequest
0 голосов
/ 31 мая 2019

Попытка копирования вложений из родительского объекта в дочерний объект, когда вложение вставляется в Opportunity (Parent Obj)

Я пытался написать код.

trigger CopyAttachmentsToRU on Attachment (after insert) {


    Set<Id> OppIds = new Set<Id>();
    for(Attachment file : Trigger.new) {

        // only collect those that are for the Opportunity object (others can be ignored)
        if(file.ParentId.getSObjectType() == Opportunity.getSObjectType()) {
            OppIds.add(file.ParentId);
            system.debug(OppIds);
        }
    }


    if(!OppIds.isEmpty()) {
        Map<Id,EIP_Lead_Rental_Object__c> ruMap = new Map<Id,EIP_Lead_Rental_Object__c>([select EIP_Opportunity__c from EIP_Lead_Rental_Object__c where EIP_Opportunity__c in : OppIds]);        
        List<Attachment> attachments = new List<Attachment>();
        system.debug(ruMap);
        for(Attachment file : Trigger.new) {
            Attachment newFile = file.clone();
            newFile.ParentId = ruMap.get(file.ParentId).Id;
            attachments.add(newFile);
        }
        // finally, insert the cloned attachments
        insert attachments;   

    }

}

Каждый раз, когда вложение прикрепляется к Opportunity ... оно не работает для меня!

1 Ответ

1 голос
/ 01 июня 2019

Ваш ruMap имеет ключи, сделанные из EIP_Lead_Rental_Object__c идентификаторов. Но вы пытаетесь вызвать get() с помощью идентификаторов возможностей. Это никогда не сработает. Я удивлен, что это не приведет к ошибке, связанной с нулем

Возможно, вам нужно что-то вроде

Map<Id,EIP_Lead_Rental_Object__c> ruMap = new Map<Id,EIP_Lead_Rental_Object__c>();
for(EIP_Lead_Rental_Object__c obj : [select Id, EIP_Opportunity__c from EIP_Lead_Rental_Object__c where EIP_Opportunity__c in : OppIds]){
    ruMap.put(obj.EIP_Opportunity__c, obj);
}

и тогда вы можете

for(Attachment file : Trigger.new){
    if(ruMap.containsKey(file.ParentId)){
        Attachment newFile = file.clone();
        newFile.ParentId = ruMap.get(file.ParentId).Id;
        attachments.add(newFile);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...