2013-11-25 5 views
2

У меня есть следующее требование:Запрос относительно триггера?

1) Чтобы получить список всех пользователей, для которых был изменен профиль.

2) Затем запрос на FRUP (это настраиваемый объект) для извлечения всех записей, связанных с пользователем, чей профиль изменен. (Объект FRUP будет содержать список всех записей, созданных всеми пользователями на все объекты говорят Учетная запись, возможность)

3) Обновление FRUP.

Для достижения этой цели я написал один триггер, через который я могу список всех пользователей, чей профиль изменился, который выглядит следующим образом выборки:

Trigger UserProfileTrigger on User (before update) { 

List<User> usr = new List<User>(); 
Map<String,String> userMap = new Map<String,String>(); 

    for(User u: Trigger.new){ 

    //Create an old and new map so that we can compare values 
     User oldOpp = Trigger.oldMap.get(u.ID);  
     User newOpp = Trigger.newMap.get(u.ID); 

    //Retrieve the old and new profile    
     string oldProfileId = oldOpp.profileId; 
     string newProfileId = newOpp.profileId; 

    //If the fields are different, the profile has changed 
     if(oldProfileId != newProfileId){ 
      System.debug('Old:'+oldProfileId); 
      System.debug('New :'+newProfileId); 
      usr.add(u); 
      System.debug('User :'+usr); 

     } 
    } 

} 

Также Ниже перечислены поля на пользовательский объект FRUP: 1) Владелец 2) Название
3) Индентификационный
4) Папка ID
5) Создано
6) Последнее Изменено

любая помощь/предложения?

+0

Привет, @Rudra, есть новый сайт для стека, специфичный для Salesforce по адресу salesforce.stackexchange.com. Присоединяйтесь к сообществу! :) –

ответ

0

Я не уверен, что поле на FRUP ссылается идентификатор пользователя, это относится, но вы можете цикл через объект FRUP с чем-то вроде этого:

List<FRUP> frupToUpdate = new List<FRUP>(); 
for (FRUP f : [ 
    Select 
     OwnerId, 
     Name, //etc. 
     UserId //the field that references the user Id 
    from FRUP 
    where userId = : usr]) { 
//update field on FRUP, e.g. f.Name = 'New Name'; 
frupToUpdate.add(f); 
} 

Это выбирает FRUP записи, которые относятся к пользователей с измененными профилями. Затем он обновляет поле в записи и добавляет запись в список для обновления. Обратите внимание, что это должно быть после вашего цикла for(User u: Trigger.new). Затем обновите записи FRUP, которые изменились: update frupToUpdate;

Смежные вопросы