Плагин с сообщением, которое я пытаюсь удалить при создании сообщения

#dynamic #dynamics-crm-2016

#динамичный #dynamics-crm-2016 #динамический

Вопрос:

Зарегистрировал плагин при создании (операция post). Это работает, но после этого я добавил два поля в форму. При создании я обновляю значения полей формы. Это работает, но при сравнении атрибута объекта результата происходит сбой:

 QueryExpression QrySales = new QueryExpression() { EntityName = Sales.LogicalName, ColumnSet = new ColumnSet(true) };
EntityCollection SalesCollec = Service.RetrieveMultiple(QrySales);
foreach (Entity sales in SalesCollec.Entities)
{
  if (sales["new_membername"].ToString() ==  UpdateSales["new_membername"].ToString())
  {
     index = index   1;
  }
}
UpdateSales["new_index"] = index   1;
Service.Update(UpdateSales);
  

Комментарии:

1. Пожалуйста, отредактируйте свой пост, потому что он неясен, и я не понимаю описания вашей проблемы.

Ответ №1:

Вы явно присваиваете значение атрибута строке, которая вполне может не существовать в коллекции атрибутов. Либо проверьте, существует ли атрибут с таким именем new_membername в возвращаемой коллекции атрибутов сущности, либо используйте вспомогательные методы в Microsoft.Xrm.Client библиотеке для безопасного извлечения значений атрибутов.

 if (sales.GetAttributeValue<string>("new_membername") == 
    UpdateSales.GetAttributeValue<string>("new_membername"))
{
    index = index   1;
}
  

Возможно, вы также захотите пересмотреть свою логику сравнения, поскольку в конечном итоге вы можете сравнить значения null, что, вероятно, не то, что вы хотите, я думаю.