Создание записи с использованием JS и JSON некорректно с использованием значения владельца - PullRequest
2 голосов
/ 11 июля 2019

Я пытаюсь создать запись в Dynamics 365 с использованием JavaScript, однако поле Владелец не устанавливается должным образом. Запись создается просто отлично, если я удаляю настройку поля ownerid. Я также попытался отформатировать guid как в нижнем, так и в верхнем регистре, но безуспешно (см. Комментарии в коде). Поля отображаются как положено в предупреждении.

Когда скрипт запускается с кодом, который делает guid строчными или нет, я получаю следующую ошибку:

Ошибка: при проверке входных параметров произошла ошибка: Microsoft.OData.ODataException: узел типа StartArray был прочитан из программы чтения JSON при попытке прочитать содержимое свойства ownerid; однако ожидался узел 'StartObject' или узел 'PrimitiveValue' с нулевым значением.

var managingDirector = Xrm.Page.getAttribute("new_managingdirector").getValue();

var md_id = managingDirector[0].id;
var md_name = managingDirector[0].name
var md_entityType = "systemuser"

//md_id = md_id.replace(/[{}]/g,"");
//md_id = md_id.toLowerCase();
//md_id = "{" + md_id + "}";

if (managingDirector != null) {
    console.log(managingDirector[0]);
    alert("MD is " + md_name + " with id " + md_id + " and type " + md_entityType);
} else {
    alert("MD is null");
}

var md_owner = new Array();
md_owner[0] = new Object();
md_owner[0].name = md_name;
md_owner[0].id = md_id;
md_owner[0].entityType = md_entityType;

var data =
{
    "new_name": "Sample Practice Management",
    "new_totalamountdue": amountDue,
    "new_deductions": deductionAmount,
    "new_deductionsnotes": deductionNotes,
     "ownerid": md_owner

}    

// create pm record
Xrm.WebApi.createRecord("new_practicemanagement", data).then(
    function success(result) {
        alert("Practice Management record created with ID: " + result.id);
        // perform operations on record creation
    },
    function (error) {
        alert("Error: " + error.message);
        // handle error conditions
    }
);

Когда я пытаюсь реструктурировать переменную данных следующим образом (с использованием как строчных, так и прописных букв)

var data =
{
    "new_name": "Sample Practice Management",
    "new_totalamountdue": amountDue,
    "new_deductions": deductionAmount,
    "new_deductionsnotes": deductionNotes,
    "ownerid": {
        name: md_name,
        id: md_id,
        entityType: md_entityType
    }
} 

Я получаю следующую ошибку:

Произошла ошибка при проверке входных параметров: Microsoft.OData.ODataException: не поддерживает нетипизированное значение в неоткрытом типе.

1 Ответ

2 голосов
/ 12 июля 2019

Когда я вижу ваш код, у вас есть поле данных, то есть значение, как показано ниже

var data =
{
    "new_name": "Sample Practice Management",
    "new_totalamountdue": amountDue,
    "new_deductions": deductionAmount,
    "new_deductionsnotes": deductionNotes,
     "ownerid": md_owner

} 

Теперь, если вы посмотрите на мой код, идентификатор владельца устанавливается как

entity["ownerid@odata.bind"] = "/systemusers(58127B9D-AFBC-E811-A958-000D3AB42BE8)";

Ниже приведен код, который работал для меня, я только что попытался создать запись контакта.

var entity = {};
    entity.firstname = "Webapi1";
    entity["ownerid@odata.bind"] = "/systemusers(58127B9D-AFBC-E811-A958-000D3AB42BE8)";

    Xrm.WebApi.online.createRecord("contact", entity).then(
        function success(result) {
            var newEntityId = result.id;
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );

Чтобы упростить свою жизнь в процессе разработки, попробуйте CRMRESTBuilder , здесь вы найдете большую часть кода, сгенерированного автоматически.

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