2011-08-05 120 views
4

我試圖在CRM 2011中創建一個實體(不是開箱即用的類型,但是CRM 4中的實體將被稱爲DynamicEntity ..一個用我的自定義屬性)。下面的代碼給了我這個錯誤,我不知道爲什麼。如果我刪除new_accounttype屬性並嘗試使用另一個自定義屬性,則此代碼將完全相同。在CRM 2011中創建實體時出錯 - CRM不喜歡OptionSetValue

CRM似乎已將「OptionSetValue」設置爲該鍵值對的值的問題。 new_accounttype是一個選擇列表(或CRM 2011中的OptionSet),並且從前端拉取的值爲100000003,因此它是有效的值。

Error: A validation error occurred. The value of 'new_accounttype' on record of type 'account' is outside the valid range.

我在做什麼錯?

public static void CreateAccount(string accountName, string accountType) 
{ 
    //Create properties 
    KeyValuePairOfstringanyType[] attributes = new KeyValuePairOfstringanyType[2]; 
    attributes[0] = new KeyValuePairOfstringanyType() { key = "name", value = accountName ?? "" }; 
    attributes[1] = new KeyValuePairOfstringanyType() { key = "new_accounttype", value = new OptionSetValue() { Value = 100000003 } }; 

    ////Create DynamicEntity 
    Entity accountToCreate = new Entity(); 
    accountToCreate.LogicalName = "account"; 
    accountToCreate.Attributes = attributes; 

    try 
    { 
    service.Create(accountToCreate); 
    } 
} 
+0

你引用Silverlight的肥皂終點? –

+2

是/是否發佈了所有內容?根據所使用的價值和名稱來判斷,這是一個自定義字段。 – glosrob

+1

只是一個故障排除建議,獲取具有該值的現有實體,並查看調試器或其他輸出中設置的內容。如果你設置的不是系統所期待的。 – user1231231412

回答

0

給這一個鏡頭:key = "new_accounttype", value = new OptionSetValue(100000003)

3

我同意,你有什麼應該工作的罰款。這隻能表示該值未發佈或不正確。正如@glosrob提到的那樣,檢查這些更改是否實際發佈。通過查看已發佈的表單並查看您的新值是否存在來確認這些值(也可以使用IE開發人員工具進行雙重檢查 - 請按F12 - 並確認HTML中select>選項對象中的值包含您期望的整數)。

順便說一句,你的代碼看起來比所需的更復雜(恕我直言!)。我相信這是更容易閱讀的無效率較低:

試試這個:

public static void CreateAccount(string accountName, string accountType) 
{ 
    ////Create DynamicEntity 
    Entity accountToCreate = new Entity(); 
    accountToCreate.LogicalName = "account"; 
    accountToCreate.Attributes = attributes; 

    //Append properties 
    accountToCreate.Attributes.Add("name", accountName ?? ""); 
    accountToCreate.Attributes.Add("new_accounttype", new OptionSetValue(100000003); 

    try 
    { 
    service.Create(accountToCreate); 
    } 
} 
+0

如果我不知道什麼是有效的值,那麼呢?如何才能知道選擇列表的一組(或至少一個)有效值? –

+2

您需要撥打以獲取屬性元數據:http://msdn.microsoft.com/en-us/library/gg509035.aspx#BKMK_RetrieveAttribute您可以在對「PicklistAttributeMetadata」的響應中轉換元數據,然後訪問'OptionSet'屬性。 –

+0

確定爲好提示+1。但我認爲,它應該是答案的一部分。畢竟,期權設定值是非常可變的,取決於組織,不是嗎? –