Никак не получается изменить с помощью 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);//ошибка лезет
}
}
Может кто подаст идею как это возможно сделать.
Инфу обыскался - нигде ничего на этот счет не нашел.
Пасиб