代码之家  ›  专栏  ›  技术社区  ›  Aidal

CRM 2011,使用JavaScript创建SalesOrderDetail

  •  0
  • Aidal  · 技术社区  · 10 年前

    我在CRM 2011中从WebResource中使用JavaScript创建销售订单详细信息时遇到了一些问题。

    我尝试过使用XrmServiceToolkit(rest和soap),也尝试过仅使用jquery。他们都失败了,我收到的错误信息并没有真正地给我指明一个有意义的方向。

    作为记录,我使用XrmServiceToolkit在代码中检索和创建其他位置,没有任何问题。

    我开始认为我缺少了一些必需的属性,或者是某些内容的格式不正确,服务器没有在错误消息中指出这一点。

    下面是我发送的最后一个请求的示例(使用jquery时):

        {
      "SalesOrderId":{
        "Id":"83b09bc4-162a-e511-9a7b-00155d39be02",
        "LogicalName":"salesorder"
      },
      "ProductId":{
        "Id":"dd194def-5756-e211-89c3-00155d19380e",
        "LogicalName":"product"
      },
      "PricePerUnit":{
        "Value":"0.00000"
      },
      "Description":"",
      "BaseAmount":{
        "Value":"0.00000"
      },
      "ManualDiscountAmount":{
        "Value":"0.00000"
      },
      "ExtendedAmount":{
        "Value":"0.00000"
      },
      "LineItemNumber":4,
      "Quantity":{
        "Value":"1.00000"
      },
      "TransactionCurrencyId":{
        "Id":"1f9b9e82-91fc-df11-b612-00155d193722",
        "LogicalName":"transactioncurrency"
      },
      "UoMId":{
        "Id":"79b6977d-a2af-42a0-8497-1a0238d629ac",
        "LogicalName":"uom"
      },
      "OwnerId":{
        "Id":"96a0f8e0-2ef7-e111-bfff-00155d19380e",
        "LogicalName":"systemuser"
      }
    }
    

    过去也有一个日期属性,但我把它取出来,以确保它不是原因。

    我发送的请求如下(使用jquery时):

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            url: odata_endpoint +"/SalesOrderDetailSet",
            data: JSON.stringify(object),
            beforeSend: function (XMLHttpRequest)
            {
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
            },
            success: function (data, textStatus, XmlHttpRequest)
            {
                var created_record = data["d"];
    
                console.log("create success: " + JSON.stringify(created_record));
            },
            error: function (XmlHttpRequest, textStatus, errorThrown)
            {
                console.log("create failed: " + JSON.stringify(errorThrown));
            }
        });
    

    在这种情况下,我会出现以下错误: 属性值类型System.Data.Services.Serializers.JsonReader+JsonObjectRecords不正确。

    我无法理解为什么这会一直失败,所以如果有人能对此给予一些新的见解,我将不胜感激,谢谢。

    1 回复  |  直到 10 年前
        1
  •  3
  •   Andrew Butenko    10 年前

    我认为这与数量字段有关。数量是小数,因此您应该使用

    Quantity: "1.0000"
    

    而不是

      "Quantity":{
        "Value":"1.00000"
      },
    
    推荐文章