10.05.2009, 14:38 | #1 |
Участник
|
Как изменить statuscode и statecode "настраиваемого объекта" (своей сущности)
Никак не получается изменить с помощью plug-in статус объектов.
В упрощенном варианте требуется при создании объекта ( скажем созданная мной сущность "dp_bonus licence" ) все остальные объекты сделать неактивными. Пробовал два варианта: 1.Одновременно в запросе изменять statecode на "Inactive" и statuscode на 2 (сразу ошибка "недопустимый код состояния либо недопустимый код статуса для указанного кода состояния"). 2. Сначала изменить statecode ( проходит), потом statuscode (дает ошибку "недопустимый код состояния либо недопустимый код статуса для указанного кода состояния" ) Вот фрагменты Код: //Формирую Запрос QueryExpression query = new QueryExpression(); query.EntityName = "dp_bonus_licence"; ColumnSet cols = new ColumnSet(); cols.Attributes.Add("statuscode"); cols.Attributes.Add("statecode"); query.ColumnSet = cols; RetrieveMultipleRequest rm = new RetrieveMultipleRequest(); rm.Query = query; rm.ReturnDynamicEntities = true; RetrieveMultipleResponse rmOut = (RetrieveMultipleResponse)сrmService.Execute(rm); //запрос работает - все statecode имеют значение "Active", а statuscode значение 1(проверял) //В неактивном состоянии объекты имеют значение "Inаctive", а statuscode значение 2(так же проверял запросом (деактивировал объекты вручную из CRM) //Теперь пытаюсь изменить значения statuscode и statecode //первый вариант дает ошибку сразу "недопустимый код состояния либо недопустимый код статуса для указанного кода состояния") BusinessEntityCollection CliObj = rmOut.BusinessEntityCollection; int i = CliObj.BusinessEntities.Count; if (i > 0) { foreach (BusinessEntity be in CliObj.BusinessEntities) { ((DynamicEntity)be).Properties.Remove("statuscode"); ((DynamicEntity)be).Properties.Remove("statecode"); ((DynamicEntity)be).Properties.Add(new StateProperty("statecode", "Inactive")); ((DynamicEntity)be).Properties.Add(new StatusProperty("statuscode", new Status(2))); crmService.Update(be);//здесь ошибка лезет } //Второй вариант устанавливает statecode в Inactive,а при записи statuscode ошибка "недопустимый код состояния либо недопустимый код статуса для указанного кода состояния". BusinessEntityCollection CliObj = rmOut.BusinessEntityCollection; int i = CliObj.BusinessEntities.Count; if (i > 0) { foreach (BusinessEntity be in CliObj.BusinessEntities) { ((DynamicEntity)be).Properties.Remove("statuscode"); ((DynamicEntity)be).Properties.Remove("statecode"); ((DynamicEntity)be).Properties.Add(new StateProperty("statecode", "Inactive")); crmService.Update(be);//это проходит } foreach (BusinessEntity be in CliObj.BusinessEntities) { ((DynamicEntity)be).Properties.Remove("statecode"); ((DynamicEntity)be).Properties.Add(new StatusProperty("statuscode",new Status(2))); crmService.Update(be);//ошибка лезет } } Инфу обыскался - нигде ничего на этот счет не нашел. Пасиб Последний раз редактировалось Андрей Фоменко; 10.05.2009 в 14:54. |
|
10.05.2009, 15:04 | #2 |
Чайный пьяница
|
Здравствуйте.
Для изменения статуса кастомного объекта используется не метод Update, а Execute со сформированным сообщением SetStateDynamicEntityRequest. Мой совет - почитывайте SDK по продукту. Там есть практически всё с примерами использования.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Андрей Фоменко (1). |
10.05.2009, 20:18 | #3 |
Участник
|
Спасибо - понял - теперь есть куда копать...))
>> Супер!!! Все получилось!!! Последний раз редактировалось Андрей Фоменко; 10.05.2009 в 21:53. Причина: Получилось |
|