我有以下要求:
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)记录ID
4)文件夹ID
5)创建人
6)最后修改者
任何帮助/建议??
答案 0 :(得分:0)
我不确定FRUP上的哪个字段引用了它所涉及的用户ID,但你可以用这样的东西遍历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;