如何通过API从Business Central获取触发Microsoft Flow用户的专属数据?
解决Business Central触发Flow仅获取当前用户数据的方案
1. 在Business Central触发Flow时传递当前用户标识
在触发Flow的Business Central逻辑(页面按钮、代码单元等)中,必须把当前登录用户的唯一标识(如用户ID、邮箱)作为参数传入Flow:
- 若用AL代码触发,可通过以下方式获取并传递:
var currentUser: Record User; flowParams: Dictionary of [Text, Text]; begin currentUser.Get(UserId); // 拉取当前登录用户的记录 flowParams.Add('UserID', currentUser."User ID"); // 调用Flow并传入参数 Microsoft.Flow.Run('你的Flow名称', flowParams); end;
2. 在Microsoft Flow中添加过滤规则
Flow触发后,在获取Business Central数据的步骤里设置精准筛选:
- 使用
Get records动作时,在Filter Query字段填入过滤条件,基于传递的用户标识筛选:
若用邮箱作为标识,替换为:UserID eq '@{triggerBody()['UserID']}'Email eq '@{triggerBody()['UserEmail']}'
3. 强化数据访问安全(可选)
为避免数据泄露,可在Business Central层面限制API权限:
- 针对
UserAPI配置权限集,确保当前用户仅能读取自身的用户记录。 - 也可直接在Flow的请求URL中追加OData过滤参数,比如:
/companies({companyId})/users?$filter=UserID eq '@{triggerBody()['UserID']}'
4. 测试验证
- 用指定用户在Business Central触发Flow,检查Flow运行历史中的输入参数是否正确传递。
- 查看
Get records动作的输出,确认仅返回触发用户的记录。
内容的提问来源于stack exchange,提问作者Shahzaib Hanif
相关产品推荐
相关产品推荐

