2012-04-04 3 views
0

Ich bin ein Problem haben, wenn ich versuche, die GUID für einen Vertrag in CRM2011 zu greifen. Zuallererst habe ich einen Workflow, der einen Entitätsdatensatz erstellt, der dann ein Plug-in auslöst, um einen Vertrag zu erneuern. Es funktioniert gut, wenn ich den Vertrag ID zu einem neuen GUID Einstellung wie unten zu sehen:CRM 2011 Get GUID für eine Entität Record (Vertrag Automatische Verlängerung)

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); 

aber wenn ich versuche, dies zu tun:

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); 

ich eine Ausnahme erhalten, dass die gegebenen Schlüssel war nicht im Wörterbuch vorhanden, was ich als verstanden habe, es hat die GUID nicht erkannt, auf die ich es setze? Es könnte etwas sehr dummes sein, ich hoffe, dass mir jemand hier helfen kann.

+0

die Linie wirft Ausnahme? Welcher Schlüssel war in welchem ​​Wörterbuch nicht vorhanden? – surfen

Antwort

0

Hallo Jungs Vielen Dank für Ihre Hilfe.

ich es selbst herausgefunden haben, ich habe die Verwendung von Abfrageausdrücke aus der Id (GUID) und die Nummer des spezifischen Auftrags abzurufen. Da ich in Zukunft viele Verträge haben werde, glaube ich, dass dies ein besserer Weg war, um die ID zu bekommen.

+0

hi A Robben, können Sie bitte teilen, wie Sie Query-Ausdrücke dafür verwendet haben? Ich brauche auch das Gleiche. – Nirman

0

Versuchen Sie folgendes:

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

Ich glaube nicht, Ihre Syntax in der ersten Zeile funktionieren: -

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

Sie diese einfach mit der folgenden Zeile mehr tun können: -

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

Wie Sie feuern diese nach dem Vertrag erstellt wird (daher die ID ist die ID der erzeugten Einheit Sie th Brennen werden e Ereignis an).

Generell obwohl das Unternehmen abrufen und dann ein Attribut Einstellung kann über die Attribute Sammlung durchgeführt werden: -

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

Eine Instanz vom Typ 'Entity' wird immer ein Nicht-Null' Id' Mitglied, wenn auf diese Weise erhalten wird, so nahm ich mir die Freiheit Ihre Antwort zu aktualisieren. Ich hoffe, Sie stimmen zu und wenn nicht, bitte frei, die Änderung zu entfernen. –

0

Erstens, es ist keine gute Idee, Primärschlüssel in CRM zuweisen, lassen Sie einfach das CRM TU es für dich. Zweitens vielleicht dein Plugin funktioniert auf Pre-creation und Pre-Schöpfung bedeutet, dass der Datensatz noch nicht in der Datenbank vorhanden ist, aber wenn man das Plugin geändert zu schreiben, dann können Sie die GUID des neu geschaffenen Datensatz erhalten.

Verwendung:

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

GUID contractId = myContract.Id; 
0

Außerdem ist es nicht unbedingt eine schlechte Idee, Primärschlüssel (Entitäts-IDs) in CRM zuzuweisen, wenn Sie einen Grund dafür haben.

Verwandte Themen