【发布时间】:2019-04-23 12:28:13
【问题描述】:
我正在尝试调用本地 Microsoft Dynamics CRM 365 (2016 / v8.2) 实例的 WebAPI(OData REST 服务)的 BulkDelete() Action。
目前我仍处于尝试使用 Postman 使操作生效的阶段。我正在对类似于https://MY_CRM_SERVER/api/data/v8.2/BulkDelete() 的 URL 进行 HTTP POST,正文如下:
{
JobName: "Test Bulk Delete 1",
QuerySet: [{
EntityName: "oo_thingstodelete",
ColumnSet: {
AllColumns: true
},
Distinct: false,
Criteria: {
FilterOperator: "And",
Conditions: [{
AttributeName: "oo_thingstodeleteid",
Operator: "Equal",
Values: [ "296e5e0a-ffe1-e944-80f4-005166811dbb" ]
}]
}
}],
StartDateTime: "2019-04-18T05:00:00Z",
ToRecipients: [],
CCRecipients: [],
SendEmailNotification: false,
RecurrencePattern: "",
RunNow: true
}
此请求正文当前产生错误:
发现名称为 '' 的属性的值节点类型为 '原始值';但是,类型的复杂值 应为“Microsoft.Dynamics.CRM.Object”。
据我所知,这是因为“Values”属性(在 QuerySet/Criteria/Conditions 下)需要一个“Object ComplexType”的集合。这在“ConditionExpression” page of the CRM WebAPI v8 中有记录。
此时我假设“Values”属性需要被赋予类似于以下的值(而不是简单的字符串值):
Values: [ { “Value”: "296e5e0a-ffe1-e944-80f4-005166811dbb" }]
但是,如果我使用这个新的“Values”属性值发布上述正文,我会收到错误:
类型上不存在属性“值” 'Microsoft.Dynamics.CRM.Object'。确保只使用属性名称 由类型定义。
这感觉像是进步,但它并没有告诉我应该改用什么属性名称。 CRM WebAPI documentation for the “Object ComplexType” 没有列出我可以在这个对象中使用的任何属性名称,我也没有找到任何关于如何通过 WebAPI 使用 BulkDelete 操作的示例代码。
请注意,此请求正文可能存在其他问题。这只是我目前的障碍。
【问题讨论】:
-
你可以尝试不使用数组 (
Values: "296e5e0a-ffe1-e944-80f4-005166811dbb") 吗? -
@jasonscript - 这是我尝试过的许多事情之一。它返回错误:
An unexpected 'PrimitiveValue' node was found when reading from the JSON reader. A 'StartArray' node was expected.. -
当我尝试
"Values": [ {"Value":"myGuid" } ]时,我得到一个不同的错误:“没有为此对象定义无参数构造函数” -
@jasonscript - 我又试了一次,但仍然收到我在帖子中提到的错误。您收到的错误听起来像是 CRM 端的反序列化错误之类的。奇数。
-
@OndrejSvejdar - 很有趣。我希望当我们最终迁移到 v9 时,我们会有一个解决方案。 documentation for CRM v9 for the Object Complex Type 实际上列出了该对象的有效属性。
标签: dynamics-crm odata dynamics-crm-2016 dynamics-crm-webapi