【发布时间】:2020-10-20 02:28:51
【问题描述】:
程序使用 SOAP 在 Acumatica 中创建账单。 Endpoint 已扩展为包括 InventoryID,生成的 WSDL。该程序使用扩展端点来读取和写入所有信息。读取非库存商品的 InventoryID 可以正常工作。
使用 InventoryID 以外的字段填充账单详细信息也可以正常工作:
loBillDetails[lnCurIndex + I1] = new BillDetail
{
// InventoryID = new StringValue { Value = lcInventoryID },
Branch = new StringValue { Value = lcBranch },
Amount = new DecimalValue { Value = lnLineExtAmt },
ExtendedCost = new DecimalValue { Value = lnLineExtAmt },
UnitCost = new DecimalValue { Value = 0 },
Qty = new DecimalValue { Value = 0 },
TransactionDescription = new StringValue { Value = lcTranDesc },
UOM = new StringValue { Value = lcUOM },
Account = new StringValue { Value = lcAccount },
Subaccount = new StringValue { Value = lcSubAccount },
Description = new StringValue { Value = lcItemDesc },
};
但是,包含 InventoryID 会导致账单插入失败,并在下方显示错误消息。我检查了提供给 InventoryID 的值是否正确。
我是否需要为要插入的账单提供任何其他字段?这可能是什么问题?
PX.Data.PXInvalidOperationException:操作失败 ---> PX.Data.PXBadDictinaryException:此时无法更新密钥。尝试先保存之前的更改。\n 在 PX.Data.PXCache1.Update(IDictionary keys, IDictionary values)\n at PX.Data.PXGraph.ExecuteUpdate(String viewName, IDictionary keys, IDictionary values, Object[] parameters)\n at PX.Data.PXGraph.CopyPasteCommitChanges(String viewName, OrderedDictionary keys, OrderedDictionary vals)\n at PX.Api.SyImportProcessor.SyStep.a(Object A_0, PXFilterRow[] A_1, PXFilterRow[] A_2)\n at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable()\n --- End of inner exception stack trace ---\n at PX.Api.ContractBased.Soap.WebApiSoapController.Post(ISoapSystemContract systemContract, XmlReader requestReader, String serviceNamespace, String internalNamespace, MethodInfo method, Func1 serviceFactory, IEdmModel edmModel)\n 在 PX.Api.ContractBased.Soap.WebApiSoapController.d__8.MoveNext()\n--- End of来自先前位置的堆栈跟踪
抛出异常的地方 ---\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n 在 PX.Api.ContractBased.Soap.WebApiSoapController。 d__6.MoveNext()\n--- 从先前引发异常的位置结束堆栈跟踪---\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (任务任务)\n 在 System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\n--- 从先前引发异常的位置结束堆栈跟踪 ---\n 在 System.Runtime.ExceptionServices。 ExceptionDispatchInfo.Throw()\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n 在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\n--- 上一个堆栈跟踪结束位置除外
离子被抛出 ---\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n 在 System.Web.Http.Controllers.ActionFilterResult.d__2 .MoveNext()\n--- 从先前引发异常的位置结束堆栈跟踪 ---\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\n 在 System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()"
抛出异常:mscorlib.dll 中的“System.ServiceModel.FaultException”
谢谢。 亚历山大
【问题讨论】:
-
嗨,Alexander,您是否尝试使用所有其他字段进行保存,然后填充 InventoryID 并再次保存? (我知道 2 次保存并不理想)。
-
嗨,黛安,感谢您愿意提供帮助。我刚刚收到答复,请看下文。
标签: acumatica