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

如何使用Microsoft Dynamics WebAPI查询采购订单及关联行项目?

通过Microsoft Dynamics WebAPI操作采购订单

一、列出采购订单

直接向采购订单实体的WebAPI端点发送GET请求即可:

  • 基础查询:GET /api/data/v9.2/purchaseorders,返回所有采购订单的完整字段
  • 过滤结果:添加$filter参数筛选,比如只取已提交的订单:GET /api/data/v9.2/purchaseorders?$filter=purchaseorderstatus eq 1(注:purchaseorderstatus的数值对应系统状态,1=已提交,2=已批准,可根据实际环境调整)
  • 精简返回字段:用$select指定需要的字段,提升请求性能:GET /api/data/v9.2/purchaseorders?$select=purchaseorderid,documentstatus,totalamount

二、列出包含关联行项目的采购订单

采购订单的行项目对应实体purchaseorderdetails,通过$expand参数关联查询,就能在返回结果中包含每个订单的行项目数据:

  • 基础关联查询:GET /api/data/v9.2/purchaseorders?$expand=purchaseorderdetails,每个采购订单对象会多出purchaseorderdetails数组,包含对应的行项目
  • 组合筛选与字段控制:比如只取已批准的订单,且仅返回关键字段:
    GET /api/data/v9.2/purchaseorders?$filter=purchaseorderstatus eq 2&$select=purchaseorderid,totalamount&$expand=purchaseorderdetails($select=purchaseorderdetailid,productid,quantity)
    
    这里通过$expand=purchaseorderdetails($select=...)来指定行项目需要返回的字段,避免冗余数据。

三、参考实现库

  • .NET 生态:使用Microsoft.PowerPlatform.Dataverse.Client NuGet包,通过ServiceClient可以直接发送WebAPI请求,或利用强类型实体类(如PurchaseOrder、PurchaseOrderDetail)编写LINQ查询,框架会自动转换为对应的WebAPI请求,示例:
    using Microsoft.PowerPlatform.Dataverse.Client;
    using Microsoft.Xrm.Sdk;
    
    var service = new ServiceClient("你的连接字符串");
    var orders = service.RetrieveMultiple(new QueryExpression("purchaseorder")
    {
        ColumnSet = new ColumnSet("purchaseorderid", "totalamount"),
        LinkEntities = {
            new LinkEntity("purchaseorder", "purchaseorderdetail", "purchaseorderid", "purchaseorderid", JoinOperator.LeftOuter)
            {
                Columns = new ColumnSet("productid", "quantity")
            }
        }
    });
    
  • JavaScript/TypeScript:无需额外库,直接用fetch或axios发送请求,只需先获取Dynamics的OAuth2访问令牌,示例:
    const accessToken = "你的Dynamics访问令牌";
    const orgUrl = "https://yourorg.crm.dynamics.com";
    
    fetch(`${orgUrl}/api/data/v9.2/purchaseorders?$expand=purchaseorderdetails`, {
        method: "GET",
        headers: {
            "Authorization": `Bearer ${accessToken}`,
            "Accept": "application/json;odata.metadata=minimal"
        }
    })
    .then(response => response.json())
    .then(result => console.log("带行项目的采购订单:", result.value));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:31:12