У меня была похожая проблема, но я хотел, чтобы все текущие и будущие поля пользователя были доступны. Поскольку настраиваемое поле поиска для пользователя не ограничено полями формулы, я создал поле с именем
OwnerLookup
на объектах Opportunity и Account, затем использовали триггеры для заполнения при создании или редактировании. Например, триггер Opportunity выглядит так:
trigger OpportunityTrigger on Opportunity (before insert, after insert, before update, after update) {
if(trigger.isBefore && trigger.isInsert) {
OpportunityTriggerHandler.newOpportunity(Trigger.old, Trigger.new);
}
else if(trigger.isAfter && trigger.isInsert){
//OpportunityTriggerHandler.futureUse(Trigger.new);
}
else if(trigger.isBefore && trigger.isUpdate){
OpportunityTriggerHandler.updateOpportunity(Trigger.new, Trigger.oldMap);
}
else if(trigger.isAfter && trigger.isUpdate){
//OpportunityTriggerHandler.futureUse(Trigger.new, Trigger.oldMap);
}
}
и класс OpportunityTriggerHandler (код Apex):
public with sharing class OpportunityTriggerHandler {
public static void newOpportunity( List<Opportunity> oldOpportunitys, List<Opportunity> newOpportunitys ) {
for (Opportunity opp: newOpportunitys) {
updateOwnerData( opp );
}
}
public static void updateOpportunity( List<Opportunity> oldOpportunitys, Map<Id, Opportunity> newOpportunitys ) {
for (Opportunity opp: oldOpportunitys) {
updateOwnerData( opp );
}
}
public static void updateOwnerData( Opportunity opp ) {
opp.OwnerLookup__c = opp.OwnerId;
}
}
Затем я создаю поля формулы в объектах Opportunity / Account, чтобы получить доступ к любому из полей объекта владельца (пользователя), таких как поле формулы Oppty Owner Name:
OwnerLookup__r.FirstName & " " & OwnerLookup__r.LastName