InventoryID使用SOAP中断Acumatica账单创建
该程序使用SOAP在Acumatica中创建账单。端点被扩展以包括InventoryID,即生成的WSDL。程序使用扩展端点读取和写入所有信息。在非库存项目上读取InventoryID可以正常工作 使用InventoryID以外的字段填充账单明细也可以正常工作:InventoryID使用SOAP中断Acumatica账单创建,acumatica,Acumatica,该程序使用SOAP在Acumatica中创建账单。端点被扩展以包括InventoryID,即生成的WSDL。程序使用扩展端点读取和写入所有信息。在非库存项目上读取InventoryID可以正常工作 使用InventoryID以外的字段填充账单明细也可以正常工作: loBillDetails[lnCurIndex + I1] = new BillDetail {
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.PXCache1.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”
多谢各位。
AlexanderSergey Marenich提供了一个解决方案:从我使用的17.200.001迁移到端点18.200.001,因为18.200.001已经包含InventoryID 他还发现用于扩展端点的映射存在问题:我将新列映射到InventoryID->InventoryID,而不仅仅是InventoryID
我迁移到了18.200.001,解决了这个问题。嗨,Alexander,你是否尝试与所有其他字段一起保存,然后填充InventoryID并再次保存?(我知道2次保存并不理想)。嗨,Diane,谢谢你的帮助。我刚刚收到一个答案,请参见下文。