0

私は問題を抱えています。私はこれをどのように解決するのが最善かを本当に考えようとしています。このエラーに関するさまざまな投稿を読みましたが、JavaScriptを使用してこれを回避できるようです。

Xrm.Page.getAttribute("name").setSubmitMode("always");

これは私にとってもプラグイン内でも機能しません。問題は、インシデントフォームで起動する更新プラグインがあり、いくつかのフィールドを更新することです。しかし、ケースを解決またはキャンセルしようとすると、更新プラグインから「オブジェクトは読み取り専用であるため更新できません」というエラーが表示されます。次のことを試しました。誰かが私に何をしているのかアドバイスしていただければ幸いです。間違い。インシデントフォームに対する事前操作でSetStateとして登録しているプラ​​グインのコード:

SetStateRequest setState = new SetStateRequest(); 
setState.EntityMoniker = new EntityReference(); 
setState.EntityMoniker.Id = incidentId; //Id which needs to be resolved/canceld 
setState.EntityMoniker.Name = "statecode"; 
setState.EntityMoniker.LogicalName = "incident"; 
setState.State = new OptionSetValue(); 
setState.Status = new OptionSetValue(); 
 SetStateResponse setStateResponse = (SetStateResponse)service.Execute(setState); } 

状態とステータスに関して、私はそれをどの値に設定しなければならないかについてかなり混乱しています。インシデントがアクティブであるときにエラーが発生し、ケースを解決してキャンセルしようとしています。誰かがここで私を助けてくれたら幸いです。前もって感謝します。

4

2 に答える 2

4

あなたの投稿にはいくつかの混乱の領域があると思います...

Xrm.Page.getAttribute("name").setSubmitMode("always");

これはクライアント側のコードであり、(サーバー側の)プラグインの動作にはまったく関係ありません。保存中に、フォームの属性が変更されたかどうかに関係なく、フォームの属性を強制的に送信するだけです。レコードが読み取り専用状態の場合、その事実は変更されません。

私はあなたがあなたのコードで何を達成しようとしているのか全くはっきりしていません。更新プラグインが失敗しているとおっしゃいました。インシデントの状態を何かに設定しようとするコードを投稿しました(@glosrobが示唆しているように、OptionSetValueオブジェクトに値を指定していないためStateStatus既にご存知かもしれませんが、投稿したコードは無効です)。次に、リクエストにプラグインを登録したことを表明しますSetState。これは、ユーザーがの状態を設定しようとすると起動することを意味しますincident。あなたのコード自体がのステータスを設定しようとしていることを考えると、incidentそれが理にかなっているのかわかりません...

あなたがやりたいことは、の更新時に、incident特定の値を設定することのように聞こえます。インシデントが読み取り専用状態の場合は、最初に読み取り可能にしてから、値を更新します。次に、エンティティの状態を以前の状態に復元する必要がありますか?それは厄介に聞こえ、おそらくあなたのコア要件を満たすためのより良い方法があることを示唆しているかもしれません。

たぶん、あなたが達成しようとしていることから始めて、そこから作業することができます:)

于 2012-05-17T15:39:34.683 に答える
3

削除する必要があります

setState.EntityMoniker.Name = "statecode";

あなたのコードから。このフィールドNameには他の目的があります。

また、追加する必要があります

setState.State.Value = 1;
setState.Status.Value = -1;
于 2012-05-18T06:31:51.317 に答える