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

D365中通过Power Automate同步用户/团队查找字段值的问题

解决Power Automate同步Dataverse用户/团队查找字段的错误问题

错误根源

你遇到的问题核心在于Dataverse的用户/团队查找字段(单一实体引用类型)只能存储用户或团队其中一种记录,不能同时给用户和团队两个属性赋值。你之前分开设置两个表达式,相当于同时向该字段写入两种类型的数据,触发了系统校验错误;另外团队表达式末尾多了一个逗号,属于语法错误,也会导致执行失败。

正确解决方案

放弃分开设置用户和团队的表达式,改用单一表达式判断Account字段的类型,生成符合Dataverse要求的实体引用JSON格式,直接赋值给Test表的目标字段。

具体表达式

假设Test表的目标字段为New_TestUser,Account表的源字段为New_User,将以下表达式粘贴到目标字段的输入框中:

if(
    equals(outputs('Get_Account_Details')?['body/_new_user_value@odata.type'], '#Microsoft.Dynamics.CRM.systemuser'),
    json(concat('{"@odata.type": "#Microsoft.Dynamics.CRM.systemuser", "id": "', outputs('Get_Account_Details')?['body/_new_user_value'], '"}')),
    if(
        equals(outputs('Get_Account_Details')?['body/_new_user_value@odata.type'], '#Microsoft.Dynamics.CRM.team'),
        json(concat('{"@odata.type": "#Microsoft.Dynamics.CRM.team", "id": "', outputs('Get_Account_Details')?['body/_new_user_value'], '"}')),
        // 当Account的New_User字段为空时, fallback到Account的所有者用户
        json(concat('{"@odata.type": "#Microsoft.Dynamics.CRM.systemuser", "id": "', outputs('Get_a_row_by_ID_-_Get_Account_Owner')?['body/_parentsystemuserid_value'], '"}'))
    )
)

关键逻辑说明

  1. 判断实体类型:通过_new_user_value@odata.type属性识别Account字段是用户(#Microsoft.Dynamics.CRM.systemuser)还是团队(#Microsoft.Dynamics.CRM.team)
  2. 生成实体引用:用json()和concat()组合出符合Dataverse要求的JSON结构,包含实体类型和ID
  3. 空值 fallback:当Account的源字段为空时,自动使用Account的所有者用户(和你之前的逻辑一致)

操作注意事项

  • 在Power Automate的「更新行」或「创建行」动作中,直接将上述表达式填入Test表目标字段的输入框,不要分开填写用户和团队的子输入框
  • 确保Get_Account_Details动作已正确返回_new_user_value和_new_user_value@odata.type属性(可以在流的运行历史中查看输出确认)
  • 删除之前错误的团队表达式,避免语法干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:39:50