You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dynamics门户网页中通过Liquid引用一对多关系中的字段?

在Dynamics CRM门户中用Liquid关联用户与外部身份记录

我之前在项目里刚好碰到过一模一样的需求,给你梳理下具体的实现步骤和需要注意的点:

首先,核心就是微软文档里提到的通过关系架构名加载关联实体,这个是关键,很多人容易在这里踩坑——必须用关系的架构名称而非显示名称。


步骤1:确认关系架构名称

你需要先找到用户(systemuser)和外部身份(externalidentity)之间的关联关系架构名:

  • 登录Dynamics CRM,进入解决方案,找到用户实体(System User)
  • 切换到「关系」标签,找到和外部身份(External Identity)的关联关系
  • 查看该关系的架构名称,通常格式类似systemuser_externalidentity(记下来,后面Liquid代码要用到)

步骤2:编写Liquid代码获取关联数据

下面是直接可用的代码示例,假设你要获取当前登录用户的所有关联外部身份的username字段:

{% comment %} 获取当前门户登录用户 {% endcomment %}
{% assign currentPortalUser = liquid_user %}

{% comment %} 通过关系架构名加载关联的外部身份集合 {% endcomment %}
{% assign userExternalIdentities = currentPortalUser["systemuser_externalidentity"] %}

{% if userExternalIdentities.size > 0 %}
  <h3>关联的外部身份:</h3>
  <ul>
    {% for identity in userExternalIdentities %}
      <li>用户名: {{ identity.username }}</li>
      {% comment %} 如果需要其他字段,直接用架构名调用即可,比如identity.issuer {% endcomment %}
    {% endfor %}
  </ul>
{% else %}
  <p>当前用户未关联任何外部身份记录</p>
{% endif %}

如果你只需要获取第一个关联的外部身份,可以简化成:

{% assign firstExternalIdentity = liquid_user["systemuser_externalidentity"] | first %}
{% if firstExternalIdentity %}
  <p>关联的外部用户名: {{ firstExternalIdentity.username }}</p>
{% endif %}

关键注意事项

  • 权限配置:必须确保当前门户用户对应的安全角色有外部身份实体的读取权限,否则即使存在关联记录,Liquid也无法获取到数据。可以在门户管理的「实体权限」中给目标角色分配externalidentity实体的读取权限。
  • 字段架构名:所有字段调用都要用架构名称,比如username是外部身份实体中对应字段的架构名,不要用显示名称(比如可能显示为“用户名”,但代码里必须用username)。
  • 集合判断:因为一个用户可能关联多个外部身份,所以建议先判断集合是否为空再遍历,避免出现空指针错误。

内容的提问来源于stack exchange,提问作者AK3800

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:13:48