Ошибка при создании сущности в CRM 2011 - CRM не нравится OptionSetValue - PullRequest
4 голосов
/ 05 августа 2011

Я пытаюсь создать объект в CRM 2011 (не из коробки, но то, что в CRM 4 было бы названо DynamicEntity ... объект с моими пользовательскими атрибутами).Код ниже дает мне эту ошибку, и я не уверен, почему.Этот точно такой же код работает, если я удаляю атрибут new_accounttype и пытаюсь использовать другой пользовательский атрибут.

Кажется, что в CRM возникла проблема с параметром OptionSetValue, установленным в качестве значения для этой пары ключ-значение.new_accounttype - это список выбора (или OptionSet в CRM 2011), и это значение 100000003 было извлечено из внешнего интерфейса, поэтому это допустимое значение.

Ошибка: произошла ошибка проверки.Значение 'new_accounttype' в записи типа 'account' находится вне допустимого диапазона.

Что я делаю не так?

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);
   }
}

Ответы [ 2 ]

3 голосов
/ 17 мая 2012

Я согласен, что у вас должно работать нормально.Это может означать только то, что значение не опубликовано или является неправильным.Как упоминает @glosrob, убедитесь, что изменения действительно опубликованы.Подтвердите эти значения, просмотрев опубликованную форму и выяснив, присутствует ли ваше новое значение (и, возможно, дважды проверьте с помощью IE Developer Tools - нажмите F12) и убедитесь, что значение в объекте опции select> в HTML содержит ожидаемое целое число).

Кроме того, ваш код выглядит более сложным, чем необходимо (ИМХО!).Я считаю, что это легче читать, не менее эффективно:

Попробуйте это:

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 голосов
/ 27 января 2012

Дайте этому шанс: key = "new_accounttype", value = new OptionSetValue(100000003)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...