使用CRM WebAPI执行GetAllTimeZonesWithDisplayName函数

时间:2017-10-13 09:58:09

标签: javascript dynamics-crm dynamics-crm-365

我尝试执行GetAllTimeZonesWithDisplayName功能来检索当前用户的时区;但是我遇到了一些困难

我一直关注这个blog,但似乎已经发生了变化。据作者说,我应该可以去:

/api/data/v8.2/GetAllTimeZonesWithDisplayName(LocaleId=1033)

但这会导致如下错误:

{   
  "error":
  {
    "code":"",
    "message":"Resource not found for the segment 'GetAllTimeZonesWithDisplayName'.",
    "innererror":{
      "message":"Resource not found for the segment 'GetAllTimeZonesWithDisplayName'.",
      "type":"Microsoft.OData.Core.UriParser.ODataUnrecognizedPathException"
      ,"stacktrace":...
    }
  } 
}

所以我查看了元数据(/api/data/v8.2/$metadata),我可以看到这个方法需要两个参数(我认为)

<Function Name="GetAllTimeZonesWithDisplayName" IsBound="true">
  <Parameter Name="entityset" Type="Collection(mscrm.timezonedefinition)" Nullable="false"/> 
  <Parameter Name="LocaleId" Type="Edm.Int32" Nullable="false"/> 
  <ReturnType Type="Collection(mscrm.crmbaseentity)" Nullable="false"/> 
</Function>

但我不知道entityset参数需要什么,而且它似乎没有列在MSDN documentation

1 个答案:

答案 0 :(得分:0)

根据元数据,该函数绑定到实体集Parameter Name="entityset" Type="Collection(mscrm.timezonedefinition)" Nullable="false"/>意味着您应该从集合中启动它。并且,我不知道为什么,使用绑定函数需要完整的函数名称,因此结果将是:

/api/data/v8.2/timezonedefinitions/Microsoft.Dynamics.CRM.GetAllTimeZonesWithDisplayName(LocaleId=1033)