У меня было много проблем при вставке Заказа на покупку с использованием API, потому что он часто отвечает ошибками, которые являются расплывчатыми или неправильно определяют причину.У нас есть довольно много настроек для данного сайта, поэтому, чтобы сузить проблему, я создал новую чистую установку Acumatica ERP (v17.210.0034) для работы без расширений конечной точки и установил данные SalesDemo в обоих.
Даже при таких чистых установочных сайтах я все еще получаю неопределенные ошибки при попытке вставить ПО.Например, я выполнил следующие шаги, используя Postman для вызова API:
- Логин: POST to url = "http://localhost/Acu172100034/entity/auth/login, с учетными данными JSON в теле. Response = success.
- GET PO: url = http://localhost/Acu172100034/entity/Default/17.200.001/PurchaseOrder/RO/PO000696?$expand=Details,ShippingInstructions. Response = JSON-данные для PO
- Я скопировал JSON в ответ GET выше и вставил его в новое тело запроса PUT. Iудалены все поля "id", "rowNumber", "custom" и "files". Я удалил поле "OrderNbr" в строках заголовка и сведений, поскольку это поле с автоматическим номером для заказа на поставку.
- Я пытаюсь вставить новый PO, используя измененный JSON с PUT: url = http://localhost/Acu172100034/entity/Default/17.200.001/PurchaseOrder,
Ответ об ошибке включает: «PX.Data.PXException: Ошибка:« Branch »не может быть пустым.\ r \ nОшибка: «Отправка» не может быть пустой. \ r \ nОшибка: «Местоположение» не может быть найдено в системе. \ r \ n ---> PX.Data.PXOuterException: Ошибка: вставка записи «Заказ на поставку»поднял хотя бы одну ошибку.Пожалуйста, просмотрите ошибки. "
В Line PO указывается BranchID, в заголовке PO указывается Location, а в ShippingInstructions указывается ShipTo. Location действительно существует. Эта ошибка существуеточевидно, неопределенные и вводящие в заблуждение. Только методом проб и ошибок я определил, что мне нужно изменить Hold с true на false, чтобы обойти эту ошибку. Я предполагаю, что это связано с тем, что существует какая-то проверка или правило, запрещающее вставку или обновление в режиме удержания? Послеизменив Hold на false и снова попытавшись вставить PUT, я получаю сообщение об ошибке: «PX.Data.PXException: Ошибка: ошибка произошла при обработке поля InventoryID: ссылка на объект не установлена на экземпляр объекта ..---> System.NullReferenceException: Ссылка на объект не установлена для экземпляра объекта. "Line, и элемент инвентаря существует, так что похоже, что эти обработчики событий выдают ошибки по какой-то причине, когда устанавливается LineType, но я предполагаю.Любые идеи, как заставить эту простую вставку API работать?
Обновление (23.02.19): Я изменил JSON для вставки немного больше, изменив элемент детали "Завершено на"false ", а заголовок PO удерживается на" true ", а статус" на удержании ".Указанная выше ошибка теперь изменяется на «Ошибка:« UOM »не может быть пустой. \ R \ nОшибка:« Учетная запись »не может быть пустой. \ R \ nОшибка:« Sub. »не может быть пустым.".UOM не является пустым, Account - пустым, а SubAccount - пустым;но Account и SubAccount не являются обязательными полями для линии PO.