【问题标题】:Unable to call the BulkDelete action from Microsoft Dynamics CRM WebAPI无法从 Microsoft Dynamics CRM WebAPI 调用 BulkDelete 操作
【发布时间】: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


【解决方案1】:

对我有用的是明确指定值数组中的项目类型。即:

Values: [{"Value":"296e5e0a-ffe1-e944-80f4-005166811dbb","Type":"System.Guid"}]

我有不同版本的 CRM(9.1)。

【讨论】:

  • 遗憾的是,这在 v8.2 中不起作用。我得到相同的“属性'值'不存在......”错误。至少我会知道它在 9.1 中有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多