Salesforce перед вставкой триггера и мастера импорта данных - PullRequest
0 голосов
/ 13 сентября 2018

Я создал триггер перед вставкой для пользовательского объекта, который проверяет любую существующую запись с помощью запроса выбора, а затем продолжает вставку, если запись отсутствует, или addError, если она уже присутствует в объекте.Перед вставкой записи мне нужно изменить значение этой записи и вставить другую запись в объект.Это прекрасно работает, если запись запускается через класс apex с использованием функции вставки, но при вставке записей из мастера импорта данных она не работает должным образом.Триггер изменяет значение, но исходное неизмененное значение вставляется в объект.Также запрос на выборку для проверки, существует ли объект или нет, возвращает записи, хотя нет соответствующих записей. Я проверил идентификаторы, возвращенные из запроса выбора, и эти идентификаторы не существуют.

 public class rec_obj {
    public static Boolean isFirstTime = true;
    public static Boolean AlreadyExists(Custom_Object_A__c obj_a){
        Integer exists = [select Id from Custom_Object_A__c where Field1__c=:obj_a.Field1__c Limit 1].size();
        if(exists>0)
        {
            return true;
        }
        return false;
    }
}


trigger AddObjA on Custom_Object_A (before insert) {
    if(rec_obj.isFirstTime){
        rec_obj.isFirstTime = false;    // To prevent infinite recursive calls
        for(Custom_Object_A obj_a : Trigger.new){
        System.debug('Source Value Inserting:'+obj_a);
        if(rec_obj.AlreadyExists(obj_a)){                    
                obj_a.addError('Already Exists');
            }else{
                Custom_Object_A obj_b = new Custom_Object_A();
                Insert obj_b;
            }
        }
        system.debug('Source Updated For Insertion:'+obj_a);
    }
    else{
        system.debug('Recusive Trigger Fired');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...