我已将测试环境更新为最新版本的Acumatica 5.10.0752。更新后,将项目插入销售订单时,我们的同步流程已开始失败。请注意,同步过程未执行任何代码更改,唯一的更改是将最新更新应用于Acumatica。我一直在努力解决这个问题,似乎无法充分解决问题并且可以使用一些帮助..
这是堆栈跟踪:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> PX.Data.PXException:错误#112:处理字段时发生错误InventoryID:对象引用未设置为对象的实例.. ---> System.NullReferenceException:未将对象引用设置为对象的实例。在PX.Data.PXCache 1.SetDefaultExt(Object data, String fieldName) at PX.Objects.SO.SOOrderEntry.SOLine_UOM_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) at PX.Data.PXFieldUpdated.Invoke(PXCache sender, PXFieldUpdatedEventArgs args) at PX.Data.PXCache.OnFieldUpdated(String name, Object row, Object oldValue, Boolean externalCall) at PX.Data.PXCache
处的PX.Datas.PXCache.OnFieldDefaulting(String name,Object row,Object& newValue)处的PX.Objects.SO.SOOrderEntry.SOLine_CuryUnitCost_FieldDefaulting(PXCache sender,PXFieldDefaultingEventArgs e)处.1。SetDefaultExt位于PX.Data.PXFieldUpdated.Invoke(PXCache sender,PXFieldUpdatedEventArgs args)的PX.Objects.SO.SOOrderEntry.SOLine_InventoryID_FieldUpdated(PXCache sender,PXFieldUpdatedEventArgs e)处于PX.Data.PXCache.OnFieldUpdated(字符串名称)处的(Object data,String fieldName) PX.Data.PXCache {1}处的PX.Data.PXCache 1.a(TNode A_0, TNode A_1, IDictionary A_2, PXCacheOperation A_3, Boolean A_4) --- End of inner exception stack trace --- at PX.Data.PXCache
1.a(TNode A_0,TNode A_1,IDictionary A_2,PXCacheOperation A_3,布尔A_4)上的,Object row,Object oldValue,Boolean externalCall 1.插入(IDictionary值)PX.Data.PXCache 1.a(TNode A_0, TNode A_1, IDictionary A_2, PXCacheOperation A_3) at PX.Data.PXCache
1个命令,SchemaMode schemaMode,Boolean mobile,PXGraph& forceGraph,String& redirectContainerView,String&在PX.Api.Soap.Screen.ScreenGate.Submit(Command []命令)的PX.Api.Services.ScreenService.Submit(String id,IEnumerable`1命令,SchemaMode schemaMode)处的redirectScreen)---内部异常堆栈的结束追踪---
以下是在更新之前正常运行的代码段:
1.Update(IDictionary keys, IDictionary values) at PX.Data.PXGraph.ExecuteUpdate(String viewName, IDictionary keys, IDictionary values, Object[] parameters) at PX.Data.PXGraph.CopyPasteCommitChanges(String viewName, OrderedDictionary keys, OrderedDictionary vals) at PX.Api.SyImportProcessor.SyStep.CommitChanges(Object itemToBypass, PXFilterRow[] targetConditions) at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable() at PX.Api.ScreenUtils.Submit(String screenId, Command[] commands, SchemaMode schemaMode, PXGraph& graph, String& redirectContainerView, String& redirectScreen, Boolean mobile) at PX.Api.Services.ScreenService.Submit(String id, IEnumerable
这似乎与UOM有关,但我不确定问题是什么。认为某些配置可能需要设置。但没有看到它可能是什么。
如果我在新行命令之后添加这行代码,它可以正常工作。
cmds.Add( SO301000.DocumentDetails.ServiceCommands.NewRow );
cmds.Add( new AcumaticaApiWS.Value { Value = item.InventoryId, LinkedCommand = SO301000.DocumentDetails.InventoryID } );
cmds.Add( new AcumaticaApiWS.Value { Value = item.Quantity, LinkedCommand = SO301000.DocumentDetails.Quantity } );
cmds.Add( new AcumaticaApiWS.Value { Value = item.UnitPrice, LinkedCommand = SO301000.DocumentDetails.UnitPrice } );
cmds.Add( new AcumaticaApiWS.Value { Value = item.WebCode, LinkedCommand = SO301000.DocumentDetails.WebCode } );
cmds.Add( new AcumaticaApiWS.Value { Value = item.ExtPrice, LinkedCommand = SO301000.DocumentDetails.ExtPrice} );
cmds.Add( new AcumaticaApiWS.Value { Value = item.ReasonCode, LinkedCommand = SO301000.DocumentDetails.ReasonCode } );
cmds.Add( new AcumaticaApiWS.Value { Value = item.LineDescription, LinkedCommand = SO301000.DocumentDetails.LineDescription } );
cmds.Add( SO301000.Actions.Save );
try
{
this.context.SO301000Submit( cmds.ToArray() );
}
catch( Exception ex )
{
...
}
但是,我希望它能够从更新前的项目库存默认值中获取UOM。
非常感谢任何帮助。
**我们的另一个想法是,当我们通过安装最新版本而不安装其中的每个版本来跳过更新时,我们无意中导致了这个问题。 - 这会导致奇怪的行为 - 跳过更新只是安装最新的? TX
答案 0 :(得分:0)
关于堆栈跟踪,您需要设置UOM