2012-04-04 20 views
0

は私がCRM2011で契約のGUIDをつかむしようとしている問題を抱えているためにGUIDを取得します。まず第一に、私は契約を更新するプラグインを発射するよりも、エンティティレコードを、作成したワークフローを持っています。下図のように、私は新しいGUIDに契約IDを設定していたときにそれが正常に動作します:CRM 2011アンエンティティレコード(契約Renewel)

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を認識していませんでしたか?それは本当に私がやっている愚かなものかもしれない、私は誰かがここで私を助けることを願っています。

+0

行が例外をスローしていますか?どのキーがどの辞書に存在しなかったか? – surfen

答えて

0

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

私はそれを自分で考え出しました。Id(GUID)と特定の契約の番号を取得するためにクエリ式を使用しました。将来私は多くの契約を結ぶことになるので、それがイドを得る良い方法だと信じています。

+0

ロッベンこんにちは、あなたは、このためにクエリ式を使用していた方法を共有してくださいすることができますか?私も同じことが必要です。 – Nirman

0

これを試してみてください:

var contract = ((Contract)context.InputParameters["Target"]); 
Guid getContract_id = contract.ContractId; 
2

私は、最初の行の構文を考えていない動作します: -

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

は、あなたがより簡単に次の行でこれを行うことができます: -

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

契約が作成された後、これを焼成していると(それゆえIdはあなたが目を発射されて作成したエンティティのIDですeイベント)。一般的に言えば

エンティティを取得して、属性を設定することは、属性のコレクションを介して行うことができるものの: -

Entity myEntity = (Entity)context.InputParameters["Target"]; 
Guid myId = (Guid)entity.Attributes["myIdName"]; 
+0

型のインスタンス 'このようにして得られたときEntity'は常にnull以外の' Id'メンバーを持つことになりますので、私はあなたの答えを更新する自由を取りました。私はあなたが同意することを願っていますし、そうでない場合は、自由に変更を削除してください。 –

0

まず、それだけでCRMを聞かせて、CRMに主キーを割り当てることは良い考えではありません自分のためにやれ。 第2に、プラグインがPre-creationで動作している可能性があります。作成前はデータベースにレコードが存在しないことを意味しますが、プラグインをポストするように変更した場合は新しく作成したレコードのGUIDを取得できます。

使用:

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

GUID contractId = myContract.Id; 
0
Guid getContract_id = context.PrimaryEntityId; 

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