如何通过Web API筛选Activityparties表中关联systemuser的记录?
解决Dynamics 365 CRM仅筛选关联系统用户的必填参会者问题
你原来用partyid_systemuser ne null做筛选没用,核心原因是activityparty表的partyid是多态查找字段——它可以关联系统用户、客户、联系人等多种实体,直接判断导航属性是否为空的方式在OData查询里没法精准过滤关联类型。
正确的做法是利用多态字段对应的类型标识字段partyidtype来筛选:systemuser(系统用户)的实体类型代码固定为8,在筛选条件里加上partyidtype eq 8,就能精准限定仅返回关联系统用户的记录。
修改后的完整查询代码如下:
OData.Feed("https://ar.api.crm4.dynamics.com/api/data/v9.2/" & "activityparties?" & "$select=_activityid_value, participationtypemask, _partyid_value, partyidtype&" & "$expand= partyid_systemuser($select=_amo_teamcompanynumber_value)&" & "$filter= participationtypemask eq 5 and partyidtype eq 8", null, [Implementation="2.0", IncludeAnnotations="*"]),
补充说明:如果需要确认其他实体的类型代码,可通过Dynamics 365的EntityDefinitions元数据端点查询,但systemuser的类型代码是固定值8,直接使用即可。
内容的提问来源于stack exchange,提问作者Luís Rodrigues
相关产品推荐
相关产品推荐

