Я пытаюсь выяснить, как использовать CrmService закрыть задачу в MS CRM 4.0MS CRM 4.0 CrmService - Закрыть Задачу
Я пытался использовать SetStateTaskRequest, чтобы установить состояние и статус Целевого в к TaskState.Completed и 5. Я также попробовал TaskState.Completed и -1, но там не было ни одной кости.
В любом случае, я получаю всегда полезное исключение «Сервер не смог обработать запрос» в попытке CrmService.Execute.
Я могу создавать и обновлять задачи так же свободно, как мне нравится. Но я не могу заставить их закончить. Это расстраивает.
Я заметил, что я могу установить состояние задачи для выполнения в CRM с помощью действия Close Task. Мне было интересно, есть ли отдельный вызов CrmService, который мне нужно сделать для выполнения действия Close Task, а не через метод CrmService.Execute.
О: Я вхожу в CrmService с полными разрешениями. Поэтому я не вижу, что это проблема с разрешениями для элемента задачи.
Я не могу думать, что еще может вызвать эту проблему. Любой совет или даже точка в правильном направлении были бы очень оценены.
FIRST EDIT:
Благодаря Grega г для получения меня проверить Detail поле исключения.
У меня теперь есть более подробное сообщение об исключении. В XML-форма:
<error>
<code>0x80040203</code>
<description>Invalid format of input XML for request SetStateTask: required field 'EntityId' is missing.</description>
<type>Platform</type>
</error>
Что странно - рассмотреть мой код (почти идентичный Greg г-х:
SetStateTaskRequest request = new SetStateTaskRequest();
request.EntityID = gTaskId;
request.TaskState = TaskState.Completed;
// ETaskStatusCode is an enumeration of the status codes taken from the StringMap in CRM.
//
// ETaskStatusCode.Completed = 5 - I can confirm this is the accurate status value for a Closed Task.
//
// Also, I have attempted this code with -1, which the documentation claims should cause the status
// to automatically be set to the default status for the supplied state. No change there.
request.TaskStatus = (int)ETaskStatusCode.Completed;
SetStateTaskResponse response = CRMManager.CrmService.Execute(request) as SetStateTaskResponse;
Кроме того, только чтобы убедиться, что у меня есть код правильный статус (а также поделиться чем-то я «ве нашел очень полезно при работе с MS CRM), вот SQL я использую, чтобы определить значения для статусов сущностей.
SELECT
MSE.ObjectTypeCode,
MSE.PhysicalName,
SM.AttributeName,
SM.Value,
SM.AttributeValue
FROM MetadataSchema.Entity MSE
INNER JOIN StringMap SM on MSE.ObjectTypeCode = SM.ObjectTypeCode
ORDER BY MSE.PhysicalName, SM.AttributeName, SM.AttributeValue
Я могу подтвердить из веб-интерфейса MS CRM, что значение состояния, которое, как связанный с Завершенной задачей, также называется Completed. Я могу подтвердить из SQL выше, что значение этого статуса для задачи - 5 - это значение, переданное из моего Enum.
Я также могу подтвердить, что gTaskId настроен на действительный Guid, который ссылается на Task, который действительно существует, и открыт в момент попытки закрытия.
Любопытство и любопытство. Есть предположения?
Сначала с летучей мыши - это почти * точно * мой код. Но я не понял, что могу получить более подробное сообщение из поля «Сведения». Однако характер этого сообщения ... странный, учитывая контекст. Я отредактирую свое оригинальное сообщение с подробностями. –