Разверните несколько полей в Acumatica REST API Endpoint - PullRequest
0 голосов
/ 06 февраля 2019

Как можно расширить несколько полей в вызове Acumatica REST API?

/entity/Default/17.200.001/Customer?$expand=Contacts

работает, и

/entity/Default/17.200.001/Customer?$expand=Salespersons

работает, но

/entity/Default/17.200.001/Customer?$expand=Contacts,Salespersons

работаетнет, не оставляя ни одного из них развернутым.

Согласно документации Acumatica:

Интеграция-> Работа с основанным на контракте REST API-> Параметры для извлечения записей -> $ expand

они говорят, что следуют соглашениям OData (https://www.odata.org/documentation/odata-version-3-0/url-conventions/)

, которым, как я полагаю, соответствует этот запрос.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Возможные обходные пути:

1) Если требуется расширенный список всех Клиентов и всех полей

a) Write a Generic Inquiry
b) Make multiple calls, expanding only one list each time

2) Если количество Клиентов довольно мало

a) Use the /Customer/{id}?$expand=... for each customers {id}

Преимущество (2a) заключается в том, что поддерживаются делегаты BQL, поскольку (1b) может выдавать ошибку «Просмотр ответов имеет делегата BQL».(1а), вероятно, требует больше всего работы.

0 голосов
/ 07 февраля 2019

Я спросил коллегу об этом поведении.Гипотеза состоит в том, что расширение множественного запроса с помощью синтаксиса OData работает, но оно не может расширить более 1 массива сущностей.Я говорю гипотезу, потому что ошибка веб-службы, возвращаемая при попытке расширить 2 массива сущностей, является слишком общей, чтобы определить это как проблему.

В настоящее время выпущенная документация, похоже, не затрагивает это ограничение, но скоро должна появиться с обновленной документацией веб-службы.Обратите внимание, что это применимо только при получении всех объектов.Если бы вы выбрали один объект (например, выберите 1 клиента по идентификатору), вы могли бы расширить более 1 массива.Для одного объекта меньше ограничений, потому что меньше необходимости оптимизировать производительность для объектов 1 против X.

Вы можете расширить несколько отдельных объектов и массив:

$expand=Contacts,MainContact,BillingContact

Ноневозможно развернуть несколько массивов:

$expand=Contacts,Salespersons

В представлении дерева левой панели экрана конечной точки веб-службы объект массива имеет обозначение массива [] (выделено красным на рисунке ниже), тогда как один объект не имеет[]: enter image description here

...