2011-08-05 97 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。但我认为,它应该是答案的一部分。毕竟,期权设定值是非常可变的,取决于组织,不是吗? –