You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

D365报表中如何获取打印用户的Network Alias及关联联系人PrimaryPhone

D365报表获取打印用户Network Alias及联系人PrimaryPhone的可行方案

嗨,我刚好处理过类似的D365报表需求,完全可以通过数据集配置或者SSRS表达式来实现你的需求,下面给你详细拆解:

一、基于UserId获取Network Alias的方法

Dynamics 365里的系统用户实体(systemuser)本身就存储了Network Alias,对应的字段是networkdomainname。你可以通过两种方式获取:

1. 使用FetchXML数据集直接获取

在报表的数据集里编写FetchXML,直接过滤当前打印用户的记录,就能拿到Network Alias:

<fetch top="1">
  <entity name="systemuser">
    <attribute name="networkdomainname" />
    <attribute name="contactid" /> <!-- 用于关联联系人 -->
    <filter>
      <condition attribute="systemuserid" operator="eq-userid" />
    </filter>
  </entity>
</fetch>

这里的eq-userid运算符会自动匹配当前执行报表(打印)的用户ID,无需手动传入参数。

2. 使用SSRS Lookup表达式

如果已经有包含系统用户数据的数据集(比如名为SystemUsers),可以用Lookup函数直接关联:

=Lookup(Globals!UserID, Fields!systemuserid.Value, Fields!networkdomainname.Value, "SystemUsers")

简单解释下:

  • Globals!UserID:报表内置的当前用户ID变量
  • 前两个参数是用当前用户ID匹配数据集里的用户ID字段,第三个参数指定要返回的Network Alias字段,最后是数据集名称

二、关联获取联系人的PrimaryPhone

拿到用户关联的contactid后,同样可以通过FetchXML或者Lookup表达式获取联系人的PrimaryPhone(默认字段是telephone1):

1. 在FetchXML中直接关联联系人实体

修改之前的FetchXML,添加对contact实体的关联,一次性拿到所有需要的字段:

<fetch top="1">
  <entity name="systemuser">
    <attribute name="networkdomainname" />
    <link-entity name="contact" from="contactid" to="contactid" link-type="inner">
      <attribute name="telephone1" /> <!-- 这就是联系人的PrimaryPhone -->
    </link-entity>
    <filter>
      <condition attribute="systemuserid" operator="eq-userid" />
    </filter>
  </entity>
</fetch>

这样数据集里会直接返回networkdomainname(Network Alias)和telephone1(PrimaryPhone)两个字段,直接绑定到报表控件即可。

2. 使用SSRS Lookup表达式关联联系人

如果已经有联系人数据集(比如Contacts),可以用嵌套Lookup:

=Lookup(
  Lookup(Globals!UserID, Fields!systemuserid.Value, Fields!contactid.Value, "SystemUsers"),
  Fields!contactid.Value,
  Fields!telephone1.Value,
  "Contacts"
)

先通过用户ID拿到关联的联系人ID,再用联系人ID获取对应的PrimaryPhone。

注意事项

  • 确保报表的运行账号有访问systemusercontact实体的权限,否则会出现数据为空的情况
  • 如果你使用的是自定义字段而非默认字段,需要替换成对应的字段逻辑名

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

火山引擎 最新活动