Как создать аннотацию из формы? - PullRequest
2 голосов
/ 24 апреля 2019
var note = Object();
  note["notetext"] = "test";
  note["subject"] = "Закрытие обращения";
  note["incidentid@odata.bind"] = `/incidents(FC8F144E-06E7-E711-80C7-0050569B0E28)`;

$.ajax( {
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    url:  'https://crmw.test.ru/testdb/api/data/v8.2/annotations',
    async: true,
    data: JSON.stringify( note ),
    beforeSend: function ( XMLHttpRequest )
    {
        XMLHttpRequest.setRequestHeader( "Accept", "application/json" );
        XMLHttpRequest.setRequestHeader( "OData-MaxVersion", "4.0" );
        XMLHttpRequest.setRequestHeader( "OData-Version", "4.0" );
    },
    success: function ( data, textStatus, XmlHttpRequest )
    {
        let result = data;
        alert( "Record created successfully" );
    },
    error: function ( XmlHttpRequest, textStatus, errorThrown )
    {
        alert("ошибка"+ XmlHttpRequest + textStatus + errorThrown);
    }
} );

Мне нужно отправить текст из формы на заметку в обращении. Что я делаю не так?

Мне нужно добавить несколько деталей

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Проблема связана с однозначным навигационным свойством , оно должно быть objectid_incident@odata.bind вместо incidentid@odata.bind

Изменить эту строку

note["incidentid@odata.bind"] =  `/incidents(FC8F144E-06E7-E711-80C7-0050569B0E28)`;

как показано ниже, тогда это будет работать. Читать дальше

note["objectid_incident@odata.bind"] = "/incidents(FC8F144E-06E7-E711-80C7-0050569B0E28)";

Ссылка

Вы можете создавать и тестировать запросы с помощью CRM REST Builder без проблем с синтаксисом.

enter image description here

1 голос
/ 24 апреля 2019

Возможно, вам придется добавить кавычки в нижнюю строку

note["incidentid@odata.bind"] ="/incidents(FC8F144E-06E7-E711-80C7-0050569B0E28)";

Вот код ниже, который я пробовал и хорошо работал для меня.

var entity = {};
entity.subject = "Test from WEbapi 3";
entity.filename = "File Name 123";
entity["objectid_incident@odata.bind"] = "/incidents(C86A8897-D94F-E911-A82F-000D3A385A1C)";

var req = new XMLHttpRequest();
req.open("POST", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/annotations", false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 204) {
            var uri = this.getResponseHeader("OData-EntityId");
            var regExp = /\(([^)]+)\)/;
            var matches = regExp.exec(uri);
            var newEntityId = matches[1];
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send(JSON.stringify(entity));
...