Dynamics 2016 Web API C# Создание продуктов - PullRequest
0 голосов
/ 07 марта 2020

Я работаю над добавлением продуктов в нашу Dynamics 2016 CRM, используя Web Api и C#.

Вот код - он возвращает внутреннюю ошибку сервера. Я знаю, что код работает, когда я делаю это для контактного лица, поэтому вопрос заключается в том, что передать вызову. Я не уверен, откуда go отсюда, поэтому любая помощь будет отличной.

Большое спасибо!


using Newtonsoft.Json.Linq;
using System;
using System.Net;
using System.Configuration;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Net.Http.Headers;
using System.Web.Http;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.IO;

namespace ProductsToCrm {
    public partial class InsertProducts {
        static void Main(string[] args) {
            Task.WaitAll(Task.Run(async () => await Create_Products()));
        }

        static async Task Create_Products() {
            Console.WriteLine("--Section Products started--");
            try {
                HttpClient httpClient = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential("uName", "uPassword", "uDomain") });
                httpClient.BaseAddress = new Uri("http://this.orgname.org:port/orgname/api/data/v8.2/");
                httpClient.Timeout = new TimeSpan(0, 1, 0);
                httpClient.DefaultRequestHeaders.Add("User-Agent", "C# console program");

                JObject jProduct = new JObject();
                jProduct.Add("name", "testing_a_product1");
                jProduct.Add("description", "I am testing");

                string opportunity1Uri;
                List<string> entityUris = new List<string>();

                HttpRequestMessage createRequest1 =
                    new HttpRequestMessage(HttpMethod.Post, "products");
                createRequest1.Content = new StringContent(jProduct.ToString(),
                    Encoding.UTF8, "application/json");
                HttpResponseMessage createResponse1 =
                    await httpClient.SendAsync(createRequest1);
                if(createResponse1.StatusCode == HttpStatusCode.NoContent) {
                    Console.WriteLine("Product '{0} {1}' created.", jProduct.GetValue("name"), jProduct.GetValue("description"));
                    opportunity1Uri = createResponse1.Headers.GetValues("OData-EntityId").FirstOrDefault();
                    entityUris.Add(opportunity1Uri);
                    Console.WriteLine("Created Entity URI: {0}", opportunity1Uri);
                } else {
                    Console.WriteLine("Failed to create Entity for reason: {0} == {1} == {2}",
                        createResponse1.ReasonPhrase, createRequest1, "test");
                }
            } catch(Exception ex) {
                Console.WriteLine(ex.ToString());
            }
            Console.ReadLine();
        }
    }
}

1 Ответ

1 голос
/ 08 марта 2020

При создании записи продукта даже в пользовательском интерфейсе CRM есть некоторые обязательные атрибуты, такие как имя, номер продукта, defaultuomscheduleid (группа единиц), defaultuomid (единица по умолчанию) и количество-десятичное число (поддерживается десятичное число). Вы должны пройти все для успешной транзакции.

Вы можете использовать почтальон или конструктор CRM REST для разработки / тестирования.

Базовая c полезная нагрузка для создания продукта следующая: Ссылка

{

   "name": "new product",

   "productnumber": "12345",

   "defaultuomscheduleid@odata.bind": "/uomschedules(54692a01-4c22-45eb-a224-a157b9a6a0b3)",

   "defaultuomid@odata.bind": "/uoms(d41f6ab2-6087-477b-a7f1-c4d1df10a57e)",

   "quantitydecimal": 0

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...