如何在 Business Central API 中插入多行?

问题描述 投票:0回答:1

我正在尝试通过 Web 服务将包含多个记录的 json 插入 Business Central

page 60000 "Sales Order Inserts MIM API"
{
    PageType = API;
    SourceTable = "Sales Order Inserts MIM";
    Caption = 'Sales Order Inserts MIM API';
    EntitySetName = 'SalesOrderInserts';
    EntityName = 'SalesOrderInsert';
    APIPublisher = 'Kuhicop';
    APIGroup = 'Kuhicop';
    DelayedInsert = true; 
    APIVersion = 'v1.0';   

    layout
    {
        area(content)
        {
            repeater(Group)
            {
                field("BatchID"; Rec."Batch ID")
                {
                    ApplicationArea = All;
                }
            }
        }
    }
}

如果我发出 GET 请求,我会看到以下响应:

{
    "@odata.context": "https://api.businesscentral.dynamics.com/v2.0/{{TENANT_ID}}/{{ENVIRONMENT}}/api/Kuhicop/Kuhicop/v1.0/$metadata#companies({{COMPANY_ID}})/SalesOrderInserts",
    "value": [
        {
            "@odata.etag": "W/\"JzIwOzE1ODc4NzU5MDIzMDQyNDQyNTI1MTswMDsn\"",
            "BatchID": "BATCH001"
        },
        {
            "@odata.etag": "W/\"JzE5OzI3MTk3MjU4MTE5MDAwNDI1NTAxOzAwOyc=\"",
            "BatchID": "BATCH002"
        },
        {
            "@odata.etag": "W/\"JzE5OzgwMDc0MzY2NzQ0NjcxOTQxOTExOzAwOyc=\"",
            "BatchID": "BATCH003"
        }
    ]
}

尝试从 Postman 插入以下网址:https://api.businesscentral.dynamics.com/v2.0/{{TENANT_ID}}/{{ENVIRONMENT}}/api/Kuhicop/Kuhicop/v1.0/companies ({{COMPANY_ID}})/销售订单插入

基于 GET 响应,我将发送一个包含以下数据的 json:

{
    "value": [
        {
            "BatchID": "BATCH004"
        },
        {
            "BatchID": "BATCH005"
        }        
    ]
}

但我收到此错误:

{
    "error": {
        "code": "BadRequest",
        "message": "The property 'value' does not exist on type 'Microsoft.NAV.salesOrderInsert'. Make sure to only use property names that are defined by the type.  CorrelationId:  a10912cb-7f47-4f38-b0a0-43f5dd595e3a."
    }
}

如何在 Business Central 自定义 API 中插入多行?

microsoft-dynamics dynamics-nav dynamics-business-central businesscentral
1个回答
0
投票

那不会像你想象的那样起作用。要一次性插入多行,您需要使用$batch。我试过一次,有效,确实很麻烦。我认为逐行插入更容易。因此,如果您真的不需要在事务中插入一堆行,那么就不要使用它。

示例

https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/$batch
User-Agent: Fiddler
Authorization: <authz token>
Content-Type: application/json
Accept: application/json
Host: localhost:9000
Content-Length: 1234

{
    "requests": [
    {
        "id": "1",
        "method": "PATCH",
        "atomicityGroup": "06d8a02a-854a-4a21-8e5c-f737bbd2dea8",
        "url": "https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/Me",
        "headers": {
        "content-type": "application/json; odata.metadata=minimal; odata.streaming=true",
        "odata-version": "4.0"
        },
        "body": {"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Person","[email protected]":"#Collection(Microsoft.OData.SampleService.Models.TripPin.Location)","AddressInfo":[{"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Location","Address":"P.O. Box 555","City":{"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.City","CountryRegion":"United States","Name":"Lander","Region":"WY"}}],"Concurrency":635657333837618321,"[email protected]":"#Collection(String)","Emails":["[email protected]","[email protected]"],"FirstName":"April","[email protected]":"#Microsoft.OData.SampleService.Models.TripPin.PersonGender","Gender":"Female","LastName":"Test","UserName":"aprilcline"}
    },
    {
        "id": "2",
        "method": "PATCH",
        "atomicityGroup": "06d8a02a-854a-4a21-8e5c-f737bbd2dea8",
        "url": "https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/Me/Trips(1001)",
        "headers": {
        "content-type": "application/json; odata.metadata=minimal; odata.streaming=true",
        "odata-version": "4.0"
        },
        "body": {"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Trip","Budget":3000,"Description":"Updated Trip","EndsAt":"2014-01-04T00:00:00Z","Name":"Trip in US","ShareId":"9d9b2fa0-efbf-490e-a5e3-bac8f7d47354","StartsAt":"2014-01-01T00:00:00Z","[email protected]":"#Collection(String)","Tags":["Trip in New York","business","sightseeing"],"TripId":1001}
    }
    ]
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.