Как правило, в Exact Online вы можете объединять несколько запросов с помощью пакетной обработки OData.Это работает только тогда, когда трафик идет к одной конечной точке (URL).
Однако ваш вопрос более функциональный по своей природе.Точное требует, чтобы каждая транзакция имела хотя бы одну строку (я знаю, что это глупо, но жить с этим).Это относится как к пользовательскому интерфейсу, так и к API, которые отражают это бизнес-правило.
В вашем событии создания PurchaseOrder необходимо отправить строки вместе с частью сообщения.
Пожалуйста, отметьте https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=PurchaseOrderPurchaseOrders и ищите «Коллекция» в тексте.
Там необходимо вставить строки (как минимум 1).
Если вы не указали точный синтаксис, пожалуйста,используйте insert into exactonlinerest..purchaseorders ... identified by ...
в Invantive SQL, а затем запустите его.В select * from sessionios@datadictionary
вы найдете фактический звонок.Когда вы включаете собственную трассировку, вы можете видеть полезную нагрузку, отправляемую в Exact Online, в виде трассировки отладки.
В качестве примечания, для загрузки данных я обычно предпочитаю использовать XML API.Это быстрее и умнее.
Запуск образца
Запустите dbgview.Включите ведение журнала трассировки, используя INVANTIVE_TRACE_ACTIVE = истинная переменная среды.Запустите инвентивный контроль или другой продукт sql.Запустите этот код, чтобы создать дубликат каждого заказа клиента в новом:
set trace-native-calls true
begin transaction
insert into exactonlinerest..salesorders
( description
, orderedby
, deliverto
, deliveryaddress
, invoiceto
)
select 'EDI order '
|| ' van '
|| to_char(sysdate, 'DD-MM-YYYY')
description
, sor.orderedby
label 'Ordered by account ID'
, sor.deliverto
label 'Deliver to account ID'
, sor.deliveryaddress
label 'Deliver to address ID'
, sor.invoiceto
label 'Invoice to account ID'
from ( select orderid, orderedby, invoiceto, deliverto, deliveryaddress from exactonlinerest..salesorders ) sor
identified
by sor.orderid
insert into exactonlinerest..salesorderlines
( description
, item
, quantity
, unitcode
)
select sle.description
, sle.item
, sle.quantity
, sle.unitcode
from exactonlinerest..salesorderlines sle
attach
to sle.orderid
commit
Результат:
Собственный след:
[49784] 15:02:21.82979-45: POST 962 bytes of data to URL '/api/v1/868047/salesorder/SalesOrders'. Disk cache: False/False, memory cache False/False.
[49784] 15:02:21.82979-45: Native request body on POST to 'https://start.exactonline.nl/api/v1/868047/salesorder/SalesOrders':
[49784] 15:02:21.82979-45: {"DeliverTo":"3ee8cdbc-e71c-4e8b-b4ee-922e84b05abf","DeliveryAddress":"fa6f3eb2-ba09-4c9f-aeb0-c967bdd8004f","Description":"EDI order van 08-12-2018","InvoiceTo":"3ee8cdbc-e71c-4e8b-b4ee-922e84b05abf","OrderedBy":"3ee8cdbc-e71c-4e8b-b4ee-922e84b05abf","SalesOrderLines":[{"Description":"Basebal handschoen links","Item":"ee4d1e32-4296-4460-908c-d109b9c2ac77","Quantity":25.0,"UnitCode":"stuk"},{"Description":"Basebal handschoen rechts","Item":"8ee41235-7688-4201-a142-ba56feb393c6","Quantity":10.0,"UnitCode":"stuk"},{"Description":"Basebal","Item":"1f61a71a-4503-407f-8b32-0f63f51a1dae","Quantity":50.0,"UnitCode":"stuk"},{"Description":"Energydrink","Item":"2d37742d-1101-49c6-8c09-59055a808415","Quantity":150.0,"UnitCode":"stuk"},{"Description":"Basebal knuppel","Item":"858cbee5-f597-4333-8679-4083c896cf9f","Quantity":30.0,"UnitCode":"stuk"},{"Description":"Energy reep","Item":"1cb1c87c-2dc4-4be9-8be6-54347403680d","Quantity":100.0,"UnitCode":"stuk"}]}
[49784] 15:02:21.89579-3: Response status 'OK', length 226.
и многие другие сообщения.