2016-04-18 2 views
2

Wer hat CRM Web API-Aufrufe ausgeführt, um CRM-Entitäten mit Suchwerten von einer anderen Entität zu aktualisieren.Festlegen von CRM-Suchwerten mit WebAPI

Ich versuche, einen Lookup-Wert zu einer anderen Entität innerhalb CRM mit WebAPI, CRM 2016 zu setzen. Es funktioniert, wenn ich den Lookup-Wert deaktivieren, aber sobald ich den Lookup-Wert aktivieren, erhalte ich Bad Request.

Unten ist mein Code in LinqPad, so dass es funktioniert.

void Main() 
{ 
using(var webClient = new WebClient()){ 
    webClient.Credentials = new NetworkCredential("Username", "Password", "Domain"); 
    webClient.Headers.Add("OData-MaxVersion", "4.0"); 
    webClient.Headers.Add("OData-Version", "4.0"); 
    webClient.Headers.Add("accept", "application/json"); 
    webClient.Headers.Add("Content-Type","application/json"); 
    webClient.Headers.Add("Prefer", "odata.include-annotations=*");   

    webClient.BaseAddress = "http://dev.company.com/DEV2016/api/data/v8.0/"; 

    var JO = new JObject(); 
    JO.Add("col_name","My Name"); 
    //JO.Add("[email protected]","/contacts(7266f26b-7105-e611-811e-005056b61789)"); 
    var dataString = JO.ToString(); 

    var responseString = webClient.UploadString("col_advisors", "POST", dataString); 

    Console.WriteLine(webClient.ResponseHeaders.Get("OData-EntityId")); 
} 
} 

Antwort

2

Ich habe es zur Arbeit. Die Felder müssen wirklich einzigartig sein, da die Groß-/Kleinschreibung beachtet wird. Kommentare hier und auch dieser Blog haben mir sehr geholfen.

http://inogic.com/blog/2016/02/set-values-of-all-data-types-using-web-api-in-dynamics-crm/

Schritt 1: Goto cutomization  Entwickler Ressource.

Schritt 2: Klicken Sie auf "Download Odata Metadata" Link und laden Sie die gleichen.

Schritt 3: Sobald Download, öffnen Sie es und finden Sie den Namen des Lookup-Attribut (d. H. new_qualifiedleadid) und überprüfen Sie sein Gehäuse.

Schritt 4: Überprüfen Sie es mit dem Wert, den Sie im Code einstellen, es sollte gleich sein.

Während meiner Kolumne col_contactid war, benennt CRM die Navigationssäule zu sein, was oben col_ContactId war.

Ich habe auch Postman (Google Chrome) Plugin verwendet und den folgenden Header zu meinem Beitrag hinzugefügt.

webClient.Headers.Add("Prefer", "odata.include-annotations=*"); 
5

Fall ist wichtig mit der WebAPI. Stellen Sie sicher, dass Ihr col_contactid der Schemaname und nicht der logische Name ist. Der logische Name Ihres Attributs lautet beispielsweise col_contactid (logische Namen sind immer Kleinbuchstaben), aber Schemanamen haben oft Großbuchstaben. Ihr Beispiel könnte col_ContactId sein, in diesem Fall würden Sie [email protected] verwenden.

Am einfachsten finden Sie den Schemanamen Ihres Attributs in CRM -> Einstellungen -> Lösungen -> Ihre Lösung -> Entitäten (links) -> Berater -> Felder. In diesem Raster sehen Sie eine Spalte für den Schemanamen.