0

以下のコードを使用して、契約状態をアクティブからドラフトに設定しようとしていました。

SetStateRequest setState = new SetStateRequest();
setState.EntityMoniker = new EntityReference();
setState.EntityMoniker.Id = contractId;
setState.EntityMoniker.Name = "Contract";
setState.EntityMoniker.LogicalName = "contract";
setState.State = new OptionSetValue(0);
setState.Status = new OptionSetValue(1);
SetStateResponse setStateResponse = (SetStateResponse)service.Execute(setState);

私の目的は、アクティブな契約を更新することですが、そのためには、ドラフト状態にして更新し、更新時にアクティブに戻す必要があります。ここで誰かが私を助けてくれれば、本当に感謝しています。

プラグインは現在、次のエラーを発生させています:「ターゲットの状態が無効です。ターゲットの状態が存在しないか、システムが現在の状態からターゲットの状態への変更を許可していません。この状態の変更要求に関するドキュメントを確認してください」

4

1 に答える 1

0

編集: 契約をキャンセルする前に、契約を請求する必要があるようです。契約ステータスを特定のステータスから下書きに設定することはできないのでしょうか? ここで MSDN の例を参照してください。

http://msdn.microsoft.com/en-us/library/gg328503.aspx

(ステータスではなく) 状態のみを気にする場合は、オプション セット値として「-1」を渡すことができます。これは、リクエストの実行時に無視されます。製品レコードを非アクティブ化するために、非常に似たようなことをしました。

/// <summary>
/// Deactivate the specified entity.
/// </summary>
/// <param name="entityRef">Entity to deactivate.</param>
/// <param name="service">Organisation service.</param>
/// <param name="status">Optional status code.</param>
private static void DeactivateEntity(EntityReference entityRef, IOrganizationService service, int status = -1)
{
    service.Execute(new SetStateRequest
        {
            EntityMoniker = entityRef,
            State = new OptionSetValue(1),
            Status = new OptionSetValue(status)
        });
}
于 2013-01-23T16:16:16.703 に答える