【问题标题】:What does this "IsValidODataAttribute": true mean in /api/data/v...?这个 "IsValidODataAttribute": true 在 /api/data/v 中是什么意思...?
【发布时间】:2020-01-30 19:00:30
【问题描述】:

我在查询实体类型activityparty 的记录时遇到问题。 我用GET /api/data/v.../activityparties?$select=activitypartyid,partyidname的请求 但它失败并出现错误:

{ “错误”:{ “代码”:“0x0”, “消息”:“在类型 'Microsoft.Dynamics.CRM.activityparty' 上找不到名为 'partyidname' 的属性。” } }

我从对 EntityDefinitions('activityparty') 的请求中获得的那两个 activitypartyidpartyidname 字段名称。

...“PrimaryIdAttribute”:“activitypartyid”,“PrimaryImageAttribute”: null, "PrimaryNameAttribute": "partyidname", ...

然后我查询EntityDefinitions('activityparty')/Attributes 以了解是否有partyidname 属性。我发现了一个有趣的字段'IsValidODataAttribute' = false。这是否意味着该字段可能是 JSON 格式,也可能不是?它到底是什么意思?我想问题出在这种情况下,否则我不知道我做错了什么:)

一个activityparty实体记录的完整表示:

{  
   "@odata.etag":"W/\"2392630\"",
   "_ownerid_value":"68682bd9-701b-460a-a383-c6d38a8d25ae",
   "activitypartyid":"b0f76c9b-49b9-45ca-b15c-0179a421f680",
   "participationtypemask":9,
   "_activityid_value":"7418ab6b-fbd2-e911-a993-000d3a3a1688",
   "ispartydeleted":false,
   "versionnumber":2392630,
   "scheduledend":"2019-09-08T12:00:00Z",
   "_partyid_value":"68682bd9-701b-460a-a383-c6d38a8d25ae",
   "scheduledstart":"2019-09-08T12:00:00Z",
   "instancetypecode":0,
   "addressusedemailcolumnnumber":null,
   "donotemail":null,
   "donotfax":null,
   "addressused":null,
   "_resourcespecid_value":null,
   "exchangeentryid":null,
   "donotphone":null,
   "donotpostalmail":null,
   "effort":null
}

【问题讨论】:

  • 你最后得到了什么?
  • 不查询实体记录数据中缺少的这个奇怪属性:)
  • 发表你的答案并结束这个问题?
  • 好的。这是有道理的。

标签: dynamics-crm dynamics-365 dynamics-crm-365 dynamics-crm-webapi


【解决方案1】:

我猜你正在寻找下面的 web api 调用。

您应该使用_partyid_value@OData.Community.Display.V1.FormattedValue 以获得预期结果。

Xrm.WebApi.online.retrieveMultipleRecords("activityparty", "?$select=activitypartyid,_partyid_value").then(
    function success(results) {
        for (var i = 0; i < results.entities.length; i++) {
            var activitypartyid = results.entities[i]["activitypartyid"];
            var _partyid_value = results.entities[i]["_partyid_value"];
            var _partyid_value_formatted = results.entities[i]["_partyid_value@OData.Community.Display.V1.FormattedValue"];
            var _partyid_value_lookuplogicalname = results.entities[i]["_partyid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);

建议使用CRM REST Builder 来获得无错误的 Web api 语法和有效负载。

【讨论】:

  • 我需要此实体类型的正确显示名称。据我所知,实体定义中的属性“PrimaryNameAttribute”表示此类实体的显示名称。例如 'account' 实体类型的 'PrimaryNameAttribute' 等于 'name',所以现在我可以轻松地执行请求 /api/data/v.../account?$select=accountid,name 来查找所有必要的信息。跨度>
  • 但是对于 'activityparty' 实体我做不到,导致那里缺少 'partyidname'。这种奇怪的行为我该怎么办?
  • @PavloMykhailyshyn 这并不奇怪,这是Dynamics Activity :) Activity 的设计太复杂了,其中包括 Activity Party 和 Activity Pointer,这是它必须被查询的方式。
  • @PavloMykhailyshyn 您是​​否在所有活动类型中寻找主题属性?检查一下。
  • @PavloMykhailyshyn 不幸的是,没有适用于所有 CRM 实体的“一刀切”的概念。 :) 你可能需要为不同的实体定制不同的逻辑,这是一个巨大的 ERP 产品,在不同的时间点为不同的概念设计.. 所以我们必须使用社区的文档和帮助来实现我们想要的.. :) @987654322 @
猜你喜欢
  • 2023-01-19
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2018-10-29
  • 1970-01-01
相关资源
最近更新 更多