0

CRM2011で契約のGUIDを取得しようとすると、問題が発生します。まず、エンティティレコードを作成するワークフローがあります。このワークフローは、プラグインを起動して契約を更新します。以下に示すように、コントラクトIDを新しいGUIDに設定すると正常に機能します。

RenewContractRequest req = new RenewContractRequest();
req.IncludeCanceledLines = true;
req.ContractId = new Guid("1767AD4E-CAF4-E011-8D97-1CC1DEF1B5FF");
req.Status = 1;
RenewContractResponse resp = (RenewContractResponse)service.Execute(req);

しかし、私がこれを行おうとしているとき:

Guid getContract_id = (Guid)((Entity)context.InputParameters["Target"])["contractid"];

RenewContractRequest req = new RenewContractRequest();
req.ContractId = getContract_id;
req.IncludeCanceledLines = true;
req.Status = 1;
RenewContractResponse resp = (RenewContractResponse)service.Execute(req);

指定されたキーが辞書に存在しないという例外が発生します。これは、設定しているGUIDを認識していないと理解しています。それは私がやっている本当に愚かなことかもしれません、誰かがここで私を助けてくれることを願っています。

4

5 に答える 5

2

最初の行の構文は機能しないと思います:-

Guid getContract_id = (Guid)((Entity)context.InputParameters["Target"])["contractid"];

次の行を使用すると、これをより簡単に行うことができます。-

Guid getContract_id = (Guid)((Entity)context.InputParameters["Target"]).Id;

コントラクトが作成された後にこれを発生させるため(したがって、IDはイベントを発生させる作成されたエンティティのIDです)。

一般的には、エンティティを取得してから属性を設定することは、属性コレクションを介して実行できます。

Entity myEntity = (Entity)context.InputParameters["Target"];
Guid myId = (Guid)entity.Attributes["myIdName"];
于 2012-04-04T16:23:56.593 に答える
0

これを試して:

var contract = ((Contract)context.InputParameters["Target"]);
Guid getContract_id = contract.ContractId;
于 2012-04-04T16:19:40.343 に答える
0

まず、CRMで主キーを割り当てるのは良い考えではありません。CRMに任せてください。次に、プラグインは事前作成で機能します。事前作成は、レコードがデータベースにまだ存在しないことを意味しますが、プラグインを投稿に変更した場合は、新しく作成されたレコードのGUIDを取得できます。

使用する:

Entity myContarct= ((Entity)context.InputParameters["Target"]);

GUID contractId = myContract.Id;
于 2012-04-04T16:27:12.463 に答える
0

こんにちはみんなあなたの助けをどうもありがとうございました。

私はそれを自分で理解しました。クエリ式を使用してID(GUID)と特定の契約の番号を取得しました。将来的には多くの契約を結ぶので、それがIDを取得するためのより良い方法だったと思います。

于 2012-04-12T11:10:01.390 に答える
0
Guid getContract_id = context.PrimaryEntityId;

また、理由がある場合は、CRMで主キー(エンティティID)を割り当てることは必ずしも悪い考えではありません。

于 2014-01-24T17:33:30.170 に答える