InventoryID使用SOAP中断Acumatica账单创建

InventoryID使用SOAP中断Acumatica账单创建,acumatica,Acumatica,该程序使用SOAP在Acumatica中创建账单。端点被扩展以包括InventoryID,即生成的WSDL。程序使用扩展端点读取和写入所有信息。在非库存项目上读取InventoryID可以正常工作 使用InventoryID以外的字段填充账单明细也可以正常工作: loBillDetails[lnCurIndex + I1] = new BillDetail {

该程序使用SOAP在Acumatica中创建账单。端点被扩展以包括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.pxBadDictionaryException:此时无法更新密钥。请先尝试保存以前的更改。\n在PX.Data.PXCache
1.Update(IDictionary key,IDictionary value)\n在PX.Data.PXGraph.ExecuteUpdate(String viewName,IDictionary key,IDictionary value,Object[]参数)在PX.Data.PXGraph.CopyPastectChanges(String viewName,OrderedDictionary key,OrderedDictionary vals)\n位于PX.Api.SyImportProcessor.sysep.a(对象a_0,PXFilterRow[]a_1,PXFilterRow[]a_2)\n位于PX.Api.SyImportProcessor.ExportTableHelper.ExportTable()\n---内部异常堆栈跟踪的结尾---\n位于PX.Api.ContractBased.Soap.WebApiSoapController.Post(ISoapSystemContract systemContract、XmlReader requestReader、String serviceNamespace、String internalNamespace、MethodInfo方法、Func
1 serviceFactory、IEdmModel edmModel)\n位于PX.Api.ContractBased.Soap.WebApiSoapController.d\u 8.MoveNext()\n--来自上一位置的堆栈结束跟踪 引发异常的位置----\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处\n在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)处\n在PX.Api.ContractBased.Soap.WebApiSoapController.d\u 6.MoveNext()处\n--从引发异常的上一个位置开始的堆栈结束跟踪----\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)\n在System.Threading.Tasks.TaskHelperExtensions.d_3`1.MoveNext()\n--从引发异常的上一个位置开始的堆栈结束跟踪----\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)\n在System.Web.Http.Controllers.ApiControllerActionInvoker.d\u 0.MoveNext()中\n---上一个位置的堆栈结束跟踪,其中 已在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处\n在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)处\n在System.Web.Http.Controllers.ActionFilterResult.d_u2.MoveNext()处引发异常\n--从引发异常的上一个位置开始的堆栈结束跟踪----\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)\n在System.Web.Http.Controller.ExceptionFilterResult.d_0.MoveNext() 引发异常:mscorlib.dll中的“System.ServiceModel.FaultException”

多谢各位。
Alexander

Sergey Marenich提供了一个解决方案:从我使用的17.200.001迁移到端点18.200.001,因为18.200.001已经包含InventoryID

他还发现用于扩展端点的映射存在问题:我将新列映射到InventoryID->InventoryID,而不仅仅是InventoryID


我迁移到了18.200.001,解决了这个问题。

嗨,Alexander,你是否尝试与所有其他字段一起保存,然后填充InventoryID并再次保存?(我知道2次保存并不理想)。嗨,Diane,谢谢你的帮助。我刚刚收到一个答案,请参见下文。