MS CRM 4.0 で CrmService を使用してタスクを閉じる方法を考えています。
を使用しSetStateTaskRequest
て、タスクの状態とステータスを TaskState.Completed と 5 に設定しようとしました。TaskState.Completed と -1 も試しましたが、ダイスもありませんでした。
いずれにせよ、私は CrmService.Execute の試行で、常に役立つ「サーバーが要求を処理できませんでした」という例外を受け取るだけです。
好きなだけタスクを自由に作成および更新できます。しかし、それらを完了に設定できないようです。イライラします。
CRM でタスクの状態を完了に設定するには、[タスクを閉じる] アクションを使用する必要があることに気付きました。CrmService.Execute メソッドを使用するのではなく、Close Task アクションを実行するために必要な別の CrmService 呼び出しがあるかどうか疑問に思っていました。
Oh: 完全な権限で CrmService にログインしています。したがって、それがタスク アイテムの権限の問題であるとは思えません。
他に何がこの問題を引き起こしているのか考えられません。アドバイスや正しい方向へのポイントだけでも大歓迎です。
最初の編集:
例外の Detail フィールドを確認させてくれたgrega gの回答に感謝します。
より詳細な例外メッセージが表示されるようになりました。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 gのコードとほぼ同じです:
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 の Web インターフェイスから、完了したタスクに関連付けられているステータス値の名前も Completed になっていることを確認できます。上記の SQL から、Task のこのステータスの値が 5 であることを確認できます。これは Enum から渡された値です。
gTaskId が、実際に存在する Task を参照する有効な Guid に設定されており、閉じようとしたときに開いていることも確認できます。
好奇心旺盛で好奇心旺盛。何かご意見は?