2016-04-18 8 views
2

CRMエンティティを別のエンティティからのルックアップ値で更新するCRM Web API呼び出しを行った人は誰ですか?WebAPIを使用してCRMルックアップ値を設定する

WebAPI、CRM 2016を使用して、CRM内の別のエンティティにルックアップ値を設定しようとしています。ルックアップ値を無効にすると機能しますが、ルックアップ値を有効にすると、

以下はLinqPadのコードですので動作します。

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

答えて

2

私はそれを動作させました。フィールドは実際には大文字と小文字が区別されるため、一意でなければなりません。ここのコメントやこのブログも本当に助けになりました。

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

ステップ1:後藤Cutomization開発リソース。

ステップ2:「ダウンロードオダタメタデータ」リンクをクリックしてダウンロードします。

手順3:ダウンロードしてから、ルックアップ属性の名前(new_qualifiedleadid)を見つけて、そのケースを確認します。

ステップ4:コードに設定している値と同じであることを確認してください。私のコラムはcol_contactidでしたが

は、CRMはcol_ContactIdの上にあったものであることを航海列の名前を変更します。

また、Postman(google chrome)プラグインを使用して、次のヘッダーを投稿に追加しました。

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

大文字と小文字はWebAPIで重要です。 col_contactidが論理名ではなくスキーマ名であることを確認してください。たとえば、属性の論理名はcol_contactid(論理名は常に小文字です)ですが、スキーマ名は大文字であることがよくあります。あなたは例えばcol_ContactIdかもしれません。その場合は[email protected]を使います。

属性のスキーマ名を見つける最も簡単な方法は、CRM - >設定 - >ソリューション - >ソリューション - >エンティティ(左側) - >アドバイザ - >フィールドに移動することです。そのグリッドには、スキーマ名の列が表示されます。

関連する問題