2011-12-19 73 views

回答

1

RecordTypes不是一個表,它們實際上是一組爲特定對象定義的類型,因此該對象的任何記錄(例如任何商機)都可以具有其中的一種類型。它基本上是用於驅動整個行爲的一個超級專業領域 - 您可以爲每個記錄類型使用不同的頁面佈局,不同的選擇列表值,您可以自定義驗證規則等。

階段再次Salesforce配置的'特殊'部分,因爲它們屬於銷售流程,我相信可用的值取決於記錄類型(即它們的作用就像選擇列表一樣)。

長話短說,您不需要擔心這些字段的任何關係,在數據庫方面他們是機會表上的列,而在SFDC中,他們是Opportunity對象上的字段。

編輯 在明確要求後,即需要兩個機會的可用舞臺名稱。

使用Visualforce可以很容易地得到沒有任何描述信息。

確保您的銷售流程已定義並鏈接到機會的適當記錄類型(聽起來像這樣已經完成)。接下來,只需使用自定義控制器(或控制器擴展)加載所需的機會 - 您可以通過頁面參數指定它們,如下所示,但這是一個人爲設計的例子,不包括任何錯誤處理等(或機會選擇):

public with sharing class DualOpptyController 
{ 
    public Opportunity oppty1 {get; set;} 
    public Opportunity oppty2 {get; set;} 

    public DualOpptyController() 
    { 
     oppty1 = [select Id, StageName from Opportunity where id = : ApexPages.currentPage().getParameters().get('o1')]; 
     oppty2 = [select Id, StageName from Opportunity where id = : ApexPages.currentPage().getParameters().get('o2')]; 
    } 
} 

然後只需使用<apex:inputField>StageName字段拖到頁面:

<apex:page controller="DualOpptyController"> 
    <apex:form > 
     <apex:inputField value="{!oppty1.StageName}"/> 
     <apex:inputField value="{!oppty2.StageName}"/> 
    </apex:form> 
</apex:page> 

當你想要做你的帳戶的搜索,你可以只使用StageName領域上都opptyoppty2在控制器。該查詢將像下面這樣(未經):

[Select Id, Name, (select Id, Name from Opportunities where StageName in : liStageNames) from Account] 

這個問題當然是,它會返回所有的帳戶,所以我想你會更好的Opportunity搜索哪裏StageName等於說oppty1返回相關的細節和相關的賬戶ID。 然後進行第二查詢以找到機會,其中StageName等於oppty1的機會,並且賬戶ID在位於第一查詢中的一組賬戶ID中。您仍然可能遇到返回太多記錄的問題,因此您可能會找到一種方法來優化此方法,或者也可以指定其他參數(例如,本月關閉的機會)。

+0

那麼,如何編寫SOQL查詢來填充selectOptions以獲取與特定的OpportunityType關聯的所有OpportunityStages? – 2011-12-19 11:46:42

+0

我很困惑你爲什麼要構建這樣的頁面 - 標準界面會要求你在開始時選擇記錄類型,然後確定可用於商機的銷售生命週期的階段。 – 2011-12-19 11:53:31

+0

我正在製作一個搜索功能,用於查找在特定階段有兩個機會的賬戶(所以選擇兩個機會,然後爲每個機會選擇一個階段),當然我們有許多自定義階段。 – 2011-12-19 11:57:24