使用 JS 和 JSON 创建记录未正确使用所有者值
Creating record using JS and JSON not correctly using owner value
我尝试使用 JavaScript 在 Dynamics 365 中创建记录,但是所有者字段设置不正确。如果我删除 'ownerid' 字段的设置,记录创建得很好。我也尝试过将 guid 格式化为小写和大写,但没有成功(请参阅代码中的注释)。这些字段按预期显示在警报中。
当脚本 运行 都带有使 guid 小写或不小写的代码时,我收到以下错误:
Error: An error occurred while validating input paramters: Microsoft.OData.ODataException: A node of type 'StartArray' was read from the JSON reader when trying to read the contents of the property 'ownerid'; however, a 'StartObject' node or 'PrimitiveValue' node with null value was expected.
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
}
);
当我尝试像这样重构数据变量时(同时使用小写和大写 ID)
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
}
}
我收到以下错误:
An error occurred while validating input paramters: Microsoft.OData.ODataException: Does not support untyped vvalue in non-open type.
当我看到你的代码时,你有数据,即字段,它的值如下
var data =
{
"new_name": "Sample Practice Management",
"new_totalamountdue": amountDue,
"new_deductions": deductionAmount,
"new_deductionsnotes": deductionNotes,
"ownerid": md_owner
}
现在,如果您查看我的代码所有者 ID 设置为
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);
}
);
为了让你的生活更轻松 w.r.t 开发尝试 CRMRESTBuilder 你会发现你的大部分代码都在这里自动生成。
我尝试使用 JavaScript 在 Dynamics 365 中创建记录,但是所有者字段设置不正确。如果我删除 'ownerid' 字段的设置,记录创建得很好。我也尝试过将 guid 格式化为小写和大写,但没有成功(请参阅代码中的注释)。这些字段按预期显示在警报中。
当脚本 运行 都带有使 guid 小写或不小写的代码时,我收到以下错误:
Error: An error occurred while validating input paramters: Microsoft.OData.ODataException: A node of type 'StartArray' was read from the JSON reader when trying to read the contents of the property 'ownerid'; however, a 'StartObject' node or 'PrimitiveValue' node with null value was expected.
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
}
);
当我尝试像这样重构数据变量时(同时使用小写和大写 ID)
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
}
}
我收到以下错误:
An error occurred while validating input paramters: Microsoft.OData.ODataException: Does not support untyped vvalue in non-open type.
当我看到你的代码时,你有数据,即字段,它的值如下
var data =
{
"new_name": "Sample Practice Management",
"new_totalamountdue": amountDue,
"new_deductions": deductionAmount,
"new_deductionsnotes": deductionNotes,
"ownerid": md_owner
}
现在,如果您查看我的代码所有者 ID 设置为
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);
}
);
为了让你的生活更轻松 w.r.t 开发尝试 CRMRESTBuilder 你会发现你的大部分代码都在这里自动生成。