REST API: операция недопустима из-за текущего состояния объекта

У меня возникают проблемы с доступом к данным из ЦАП, который имеет любое количество настроек с ним. У меня есть ЦАП с несколькими более сложными модификациями, поэтому я начну с простой. Я изменил поле Внешняя ссылка SO.SOOrder, Это единственное изменение в ЦАП.

Оригинальные Атрибуты

[PXDBString(40, IsUnicode = true)]
[PXUIField(DisplayName = "External Reference")]

Настроить атрибуты (заменить оригинал)

[PXDBString(40, IsUnicode = true)]
[PXUIField(DisplayName = "Some Text Here")]

Теперь, когда я пытаюсь получить доступ к любому SalesOrder через API REST:

GET https://site.acumatica.com/entity/Default/17.200.001/SalesOrder/SO000123

Следующая ошибка возвращается:

{
    "message": "An error has occurred.",
    "exceptionMessage": "Operation is not valid due to the current state of the object.",
    "exceptionType": "System.InvalidOperationException",
    "stackTrace": "   at PX.Api.ContractBased.EntityService.FillEntityImplWithKeys(String version, String name, EntityImpl entity, String[] keys)
   at PX.Api.ContractBased.SystemContracts.V2.SoapFacade.PX.Api.ContractBased.IRestGate.FillEntityImplWithKeys(EntityImpl entity, String[] keys)
   at PX.Api.ContractBased.SystemContracts.V2.RestController.CreateEntityFromKeys(String objectName, String idsString)
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}

Теперь я не уверен, происходит ли это из-за моей модификации ЦАП или нет, но я не могу найти ничего другого, связывающего этот и мой другой проблемный ЦАП CustomerLocation к тому же сообщению об ошибке.

Куда мне пойти отсюда, чтобы определить, что такое плохое состояние?

2 ответа

Решение

Поскольку этот экран содержит несколько ключевых полей (Тип заказа и Номер заказа), вам необходимо поместить их все в URL.

GET https://site.acumatica.com/entity/Default/17.200.001/SalesOrder/SO000123

изменяется, если это тип SO Sales Order

GET https://site.acumatica.com/entity/Default/17.200.001/SalesOrder/SO/SO000123

Это сообщение об исключении также может быть результатом наличия символа косой черты в конце URL-адреса запроса после полей ключа.

Исключение:

http://site.acuamtica.com/entity/Default/17.200.001/SalesOrder/SO/SO123456/

Успешная:

http://site.acuamtica.com/entity/Default/17.200.001/SalesOrder/SO/SO123456

Другие вопросы по тегам