Power Automate中FetchXML分页添加Apply To Each后失效问题求助
解决D365 FetchXML分页在Apply To Each下失效的问题
核心原因
在Do Until循环内使用Apply To Each处理记录时,Power Automate的自动分页上下文会被干扰,导致无法正确识别下一页的分页令牌,最终使Do Until仅执行一次。解决关键是手动管理分页令牌,替代默认的自动分页逻辑。
具体解决步骤
- 初始化两个变量:
pageToken:字符串类型,初始值为空,用于存储分页CookieallRecords:数组类型,初始值为空,用于存储所有获取到的记录
- 配置Do Until循环的终止条件:
@equals(variables('pageToken'), '')(当分页令牌为空时停止循环) - 在Do Until循环内依次执行以下操作:
- 调用D365获取记录:
- 若
pageToken为空,FetchXML格式示例:<fetch count="5000" page="1"> <!-- 你的自定义查询逻辑 --> </fetch> - 若
pageToken不为空,FetchXML需带上分页Cookie和对应页码:<fetch count="5000" page="@{add(outputs('获取_D365记录')?['body/page'], 1)}" paging-cookie="@{variables('pageToken')}"> <!-- 你的自定义查询逻辑 --> </fetch>
- 若
- 追加当前页记录到总数组:使用「追加到数组变量」动作,将当前获取到的记录(
outputs('获取_D365记录')?['body/value'])添加到allRecords中 - 更新分页令牌:从获取记录的响应中提取
body/paging-cookie值,赋值给pageToken;若该值为空(无下一页),则将pageToken设为空字符串 - 处理当前页记录:添加Apply To Each动作,遍历当前页的记录(
outputs('获取_D365记录')?['body/value']),在其中执行你需要的操作(如Compose)
- 调用D365获取记录:
注意事项
- 确保FetchXML的
count属性设置为5000,这是D365允许的单页最大记录数,可减少循环次数 - 若记录量较大,需调整Do Until循环的超时时间,避免循环提前终止
- 必须在每次循环内处理当前页的数据,不要在Do Until循环外直接遍历所有记录,防止分页上下文丢失
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

