如何通过Web API从Dynamics 365本地版CRM获取owner类型的ownerid字段?
嘿,我之前也碰到过一模一样的问题!咱们来一步步排查解决:
首先要明确:ownerid属于Lookup类型字段,它关联着systemuser(用户)或team(团队)实体,Dynamics 365 Web API默认不会自动返回Lookup字段的完整信息——哪怕你在$select里明确指定了它。
解决方法1:用$expand拉取关联的所有者数据
修改你的查询URL,加上$expand=ownerid,如果需要所有者的名称等额外属性,也可以在$select里补充(比如ownerid/name):
https://baseURL/moves?$select=moveid,ownerid,movenumber,ownerid/name&$expand=ownerid&$filter=movenumber%20eq%20%27236659%27
调整后返回的结果会包含ownerid的完整信息,类似这样:
{
"@odata.context":"https://baseURL/$metadata#moves(moveid,ownerid,movenumber,ownerid/name)/$entity",
"@odata.etag":"W/"37655223"",
"moveid":"4583b2fe-83d9-e611-80c7-369e029457bb",
"movenumber":"236659",
"ownerid@odata.bind":"/systemusers(xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)",
"ownerid": {
"@odata.etag":"W/"xxxxxx"",
"name":"John Doe",
"systemuserid":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
解决方法2:检查API版本与请求头
确保你使用的是较新的Web API版本(比如v9.1及以上),可以在请求中添加以下头信息:
OData-Version: 4.0 OData-MaxVersion: 4.0
或者直接在URL末尾追加版本参数:&api-version=9.1——旧版本API对Lookup字段的返回逻辑可能存在差异。
解决方法3:验证权限配置
确认当前访问API的用户对systemuser和team实体有读取权限,如果用户没有权限读取关联的所有者记录,Web API会自动隐藏ownerid字段。你可以在Dynamics 365的安全角色设置里检查对应权限。
我当时就是用第一种方法解决的,你试试看应该就能拿到ownerid字段了!
内容的提问来源于stack exchange,提问作者I Love Stackoverflow

