Мы используем MSCRM Dynamics, и мы пытаемся получить всех детей определенного пользователя. (У пользователя есть менеджер, у менеджера есть «дети».) Следующее работает, но выдает исключение, если у пользователя нет детей. Возможно, сначала это кажется логичным, но почему бы просто не вернуть пустой набор? И из всего этого он выдает SoapException с загадочным сообщением «Invalid Argument» (что неверно), а .Detail.InnerText говорит «0x80040203 Значение, переданное для ConditionOperator.In - пустая платформа». Если вы посмотрите на соответствующий класс Response, у него есть коллекция - почему бы просто не оставить его пустым?CRM: Получить детей исключение для детей без детей
// Create the request object.
RetrieveAllChildUsersSystemUserRequest retrieve =
new RetrieveAllChildUsersSystemUserRequest();
// Create the column set object that indicates the fields to be retrieved.
ColumnSet cols = new ColumnSet();
cols.EntityName = "systemuserid";
// Set the column set.
retrieve.ColumnSet = cols;
// Set the ID of the parent user.
retrieve.EntityId = context.UserId;
RetrieveAllChildUsersSystemUserResponse retrieved =
new RetrieveAllChildUsersSystemUserResponse();
/// Execute the request.
/// Catches if user does not have children
/// (Check to see if user is manager)
try
{
retrieved =
(RetrieveAllChildUsersSystemUserResponse)crmService.Execute(retrieve);
}
catch (System.Web.Services.Protocols.SoapException e)
{
throw new Exception(string.Format("{0}", e.Detail.InnerText));
}
В настоящее время мы глотаем все SoapExceptions, которые, как я считаю, являются плохим решением. Мне нужно будет копаться в выражении, чтобы увидеть, могу ли я лучше изолировать этот случай, если не будет найдено лучшего разрешения. – Thanatos