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

Power Automate中FetchXML分页添加Apply To Each后失效问题求助

解决D365 FetchXML分页在Apply To Each下失效的问题

核心原因

在Do Until循环内使用Apply To Each处理记录时,Power Automate的自动分页上下文会被干扰,导致无法正确识别下一页的分页令牌,最终使Do Until仅执行一次。解决关键是手动管理分页令牌,替代默认的自动分页逻辑。

具体解决步骤

  • 初始化两个变量:
    • pageToken:字符串类型,初始值为空,用于存储分页Cookie
    • allRecords:数组类型,初始值为空,用于存储所有获取到的记录
  • 配置Do Until循环的终止条件:@equals(variables('pageToken'), '')(当分页令牌为空时停止循环)
  • 在Do Until循环内依次执行以下操作:
    1. 调用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>
        
    2. 追加当前页记录到总数组:使用「追加到数组变量」动作,将当前获取到的记录(outputs('获取_D365记录')?['body/value'])添加到allRecords中
    3. 更新分页令牌:从获取记录的响应中提取body/paging-cookie值,赋值给pageToken;若该值为空(无下一页),则将pageToken设为空字符串
    4. 处理当前页记录:添加Apply To Each动作,遍历当前页的记录(outputs('获取_D365记录')?['body/value']),在其中执行你需要的操作(如Compose)

注意事项

  • 确保FetchXML的count属性设置为5000,这是D365允许的单页最大记录数,可减少循环次数
  • 若记录量较大,需调整Do Until循环的超时时间,避免循环提前终止
  • 必须在每次循环内处理当前页的数据,不要在Do Until循环外直接遍历所有记录,防止分页上下文丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:05:00