#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, что, вероятно, не то, что вы хотите, я думаю.