2016-11-09 85 views
0

我的控制器中有一個由PageBlockTable使用的Visualforce頁面。Salesforce,使用SOQL從ProcessInstance對象訪問TargetObject字段

我可以訪問p.ProcessInstance.TargetObject的其他標準的領域,如p.ProcessInstance.TargetObject.Name和.ID等等

但我怎麼可以訪問其中記錄TargetObject的自定義字段是相關的?或者這是不可能的?如果它不可能,那麼我認爲我可以在一個單獨的查詢中做到這一點,但我不知道如何。

謝謝

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

您必須執行對TargetObject額外的SOQL查詢,如processInstance的是多態的。例如。

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或描述調用適當的名稱。在第38行36列 – realtek

+0

任何想法的克里斯?謝謝 – realtek

+0

克里斯的例子是通用的,你需要使你的查詢更具體,例如,如果你的相關對象是帳戶替換''列表 targetObjectFields = [SELECT ID,字段名稱從SObject WHERE ID IN:targetObjectIds];' 'List targetObjectFields = [SELECT Id,MyField__c FROM Account WHERE Id IN:targetObjectIds];''假設你想要的自定義字段叫做MyField__c – thegogz