【问题标题】:Creating record using JS and JSON not correctly using owner value使用 JS 和 JSON 未正确使用所有者值创建记录
【发布时间】:2019-07-11 19:25:40
【问题描述】:

我尝试使用 JavaScript 在 Dynamics 365 中创建记录,但是没有正确设置所有者字段。如果我删除“ownerid”字段的设置,记录会创建得很好。我还尝试以小写和大写格式格式化 guid,但均未成功(请参阅代码中的 cmets)。这些字段按预期显示在警报中。

当脚本使用使 guid 小写或不小写的代码运行时,我收到以下错误:

错误:验证输入参数时出错:Microsoft.OData.ODataException:尝试读取属性“ownerid”的内容时,从 JSON 读取器读取了“StartArray”类型的节点;但是,需要一个具有空值的“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
    }
);

当我尝试像这样重构数据变量时(带有小写和大写 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
    }
} 

我收到以下错误:

验证输入参数时出错:Microsoft.OData.ODataException: 不支持非开放类型的无类型 vvalue。

【问题讨论】:

    标签: javascript json dynamics-crm odata microsoft-dynamics


    【解决方案1】:

    当我看到你的代码时,你有数据,即字段,它的值如下

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

    为了让您的开发工作更轻松,请尝试CRMRESTBuilder,您会发现大部分代码都是在这里自动生成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2020-06-08
      • 1970-01-01
      • 2014-10-06
      • 2012-04-30
      相关资源
      最近更新 更多