2016-11-09 33 views
0

PageBlockTableによって消費されるVisualforceページのコントローラには次のものがあります。SOQLを使用してProcessInstanceオブジェクトからTargetObjectフィールドにアクセスするSalesforce

私は、このようなp.ProcessInstance.TargetObject.Nameや.IDなどなどp.ProcessInstance.TargetObjectの他の標準的なフィールドにアクセスすることができます

...

しかし、どのように私は、レコードの対象物体のカスタムフィールドにアクセスすることができますに関係している?またはこれは不可能ですか?それが不可能な場合、私は別のクエリでそれを行うことができると仮定しますが、私はどのように把握できません。

は、プロセスインスタンスが多型であるとしてあなたは、対象物体上の追加SOQLクエリを実行する必要が

List<ProcessInstanceWorkitem> results = [Select p.ProcessInstance.Status, p.ProcessInstance.TargetObject.Name, p.ProcessInstance.TargetObject.Id, p.Actor.Name, p.CreatedBy.Name, p.CreatedDate FROM ProcessInstanceWorkitem p]; 

答えて

2

ありがとうございます。例えば。

List<ProcessInstanceWorkitem> results = [Select p.ProcessInstance.Status,  p.ProcessInstance.TargetObject.Name, p.ProcessInstance.TargetObject.Id, p.Actor.Name, p.CreatedBy.Name, p.CreatedDate FROM ProcessInstanceWorkitem p]; 

List<Id> targetObjectIds = new List<Id>(); 
for(SObject result : results) 
{ 
    targetObjectIds.add(result.p.ProcessInstance.TargetObject.Id); 
} 
List<SObject> targetObjectFields = [SELECT Id, Field names FROM SObject WHERE Id IN:targetObjectIds]; 

編集: には、現在使用しているオブジェクトへのSObjectを変更してください。

+0

こんにちは、本当にありがとうございました!コンパイルエラー:sObjectタイプ 'SObject'はサポートされていません。カスタムオブジェクトを使用しようとしている場合は、エンティティ名の後ろに '__c'を追加してください。適切な名前についてはWSDLまたはdescribe呼び出しを参照してください。 38行目の列36 – realtek

+0

アイデアのクリス?ありがとうございます – realtek

+0

Chrisさんの例は一般的です。例えば、あなたの関連するオブジェクトがアカウントである場合、より具体的なクエリを作成する必要があります。 targetObjectFields = [SELECT ID、フィールド名FROM SOBject WHERE Id IN:targetObjectIds]; ' 'List targetObjectFields = [SELECT Id、MyField__c FROMアカウントWHERE Id:targetObjectIds];' 'あなたが望むカスタムフィールドがMyField__c – thegogz

関連する問題