Не удается найти добавление подсчета счета в системе через API Acumatica.

Вопрос или проблема

Я добавляю счет через конечную точку по умолчанию в Acumatica. Он отвечает с ошибкой:

{
    "message": "Произошла ошибка.",
    "exceptionMessage": "Счет.Детали[0].Субсчет: Субсчет '560' не может быть найден в системе. Пожалуйста, проверьте, есть ли у вас соответствующие права доступа к этому объекту.\nВставка записи 'AP Transactions' вызвала как минимум одну ошибку. Пожалуйста, проверьте ошибки.",
    "exceptionType": "PX.Api.ContractBased.OutcomeEntityHasErrorsException",
    "stackTrace": "   at PX.Api.ContractBased.EntityService.GetOperationResult(EntityImpl entity, EntityExportContextBuilder entityExportContextBuilder, PXSYTable exportedKeys, PXOuterException contextError, Boolean throwOnError, Boolean addCancelCommand) in C:\\build\\code_repo\\NetTools\\PX.Api.ContractBased\\EntityService.cs:line 724\r\n   at PX.Api.ContractBased.EntityService.Put(ISystemContract systemContract, String version, String name, EntityImpl entity, CbOperationContext operationContext, Boolean throwOnError) in C:\\build\\code_repo\\NetTools\\PX.Api.ContractBased\\EntityService.cs:line 676\r\n   at PX.Api.ContractBased.Soap.SoapFacadeBase.PutImpl(EntityImpl entity, Boolean throwOnValidationError) in C:\\build\\code_repo\\NetTools\\PX.Api.ContractBased\\Soap\\SoapFacadeBase.cs:line 126\r\n   at PX.Api.ContractBased.SystemContracts.V2.RestController.PutEntity(EntityImpl entity, String select, String filter, String expand, String custom) in C:\\build\\code_repo\\NetTools\\PX.Api.ContractBased\\SystemContracts\\V2\\RestController.cs:line 304\r\n   at lambda_method(Closure , Object , Object[] )\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()\r\n--- Конец трассировки стека из предыдущего места, где было выброшено исключение ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
}

Счета и субсчета контролируются доступом GL, и пользователь, с которым я вхожу, действительно имеет доступ, также я могу вводить счет и субсчет через интерфейс без проблем.

Единственное, что работает, это если у поставщика нет установленного счета расходов и субсчета расходов, или если счет и субсчет совпадают со счетом расходов и субсчетом поставщика.

Любая помощь будет оценена.

Ниже приведен мой запрос в формате Json

{
  "Id": null,
  "Type": {
    "Value": "INV"
  },
  "ReferenceNbr": null,
  "Status": null,
  "Date": {
    "Value": "2024-08-25T00:00:00"
  },
  "PostPeriod": {
    "Value": "052025"
  },
  "Vendor": {
    "Value": "2495"
  },
  "VendorRef": {
    "Value": "test"
  },
  "DueDate": null,
  "Hold": null,
  "BranchID": {
    "Value": "90"
  },
  "CapturedTax": {
    "Value": 5.1
  },
  "CapturedTotal": {
    "Value": 39.13
  },
  "Amount": {
    "Value": 39.13
  },
  "WorkgroupID": null,
  "Owner": {
    "Value": 13912
  },
  "note": null,
  "files": null,
  "FinancialDetails": null,
  "Details": [
    {
      "InventoryID": {
        "Value": null
      },
      "TransactionDescription": {
        "Value": "Dunite AP25 ECR680"
      },
      "Qty": {
        "Value": 0.86
      },
      "UnitCost": {
        "Value": 39.57
      },
      "Account": {
        "Value": "7463"
      },
      "SubAccount": {
        "Value": "560"
      },
      "TaxCategory": null,
      "POLine": null,
      "POOrderType": null,
      "POOrderNbr": null,
      "POReceiptNbr": null,
      "POReceiptLine": null,
      "Branch": {
        "Value": "90"
      },
      "note": null
    }
  ]
}

Ответ или решение

Ваша проблема заключается в том, что Acumatica API не может найти указанный субсчет (‘560’) при добавлении счета. Ошибка, которую вы получили, указывает на то, что система не может найти этот субсчет и предлагает проверить права доступа к этому объекту. Рассмотрим несколько важных шагов, которые могут помочь решить эту проблему.

1. Проверьте наличие субсчета

Убедитесь, что субсчет ‘560’ действительно существует в системе Acumatica. Вы можете это проверить, зайдя в соответствующий раздел и просмотрев доступные субсчета. Если он отсутствует, вам нужно создать ее или использовать существующий субсчет.

2. Проверьте права доступа

Хотя вы упомянули, что у вас есть необходимые права доступа, это стоит перепроверить. Убедитесь, что ваш пользователь действительно имеет доступ к этому субсчету в рамках учетной записи GL (Главной книги). Это можно сделать, зайдя в администрирование прав доступа и проверив настройки безопасности для вашего пользователя.

3. Проверьте настройки поставщика

Проблема может возникать из-за того, что выбранный вами поставщик не имеет установленного счета расходов и субсчета. Убедитесь, что в карточке поставщика правильно указаны счета и субсчета, особенно если они являются обязательными.

4. Используйте правильный этап продажи

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

5. Проверьте настройки входных данных

Ваш JSON-запрос выглядит корректным в целом. Убедитесь, что поле SubAccount корректно указано и соответствует тому, что ожидается в системе. Попробуйте заменить его на другой существующий субсчет и посмотрите, будет ли это работать.

Пример исправленного запроса

Если все вышеперечисленное правильно, попробуйте изменить субсчет в вашем запросе:

"SubAccount": {
    "Value": "123" // Замените на существующий субсчет
}

6. Консультируйтесь с поддержкой Acumatica

Если вы выполнили все вышеперечисленное и проблема все еще не решена, настоятельно рекомендую обратиться в службу поддержки Acumatica с указанной ошибкой, предоставив их все необходимые детали запроса и среды. Это может быть связано с багом или ограничениями специфичными для вашего инстанса.

Следуя этим шагам, вы сможете диагностировать и, возможно, решить проблему с добавлением субсчета в систему. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...