同様の問題が発生しましたが、現在および将来のすべてのユーザーフィールドを使用できるようにしたかったのです。ユーザーへのカスタムルックアップフィールドは数式フィールドによって制限されないため、OpportunityオブジェクトとAccountオブジェクトにOwnerLookupという名前のフィールドを作成し、トリガーを使用して作成または編集時にデータを入力しました。たとえば、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オブジェクトにFormulaフィールドを作成して、Oppty Owner Name数式フィールドなどの所有者(ユーザー)オブジェクトフィールドのいずれかにアクセスします。
OwnerLookup__r.FirstName & " " & OwnerLookup__r.LastName