CRM 2011,使用 JavaScript 创建 SalesOrderDetail
CRM 2011, Creating SalesOrderDetail with JavaScript
我在 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.
我不明白为什么这总是失败,所以如果有人能对此提出新的看法,我们将不胜感激,谢谢。
我认为这与数量字段有关。数量是小数,所以你应该使用
Quantity: "1.0000"
而不是
"Quantity":{
"Value":"1.00000"
},
我在 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.
我不明白为什么这总是失败,所以如果有人能对此提出新的看法,我们将不胜感激,谢谢。
我认为这与数量字段有关。数量是小数,所以你应该使用
Quantity: "1.0000"
而不是
"Quantity":{
"Value":"1.00000"
},