【发布时间】:2021-02-15 21:05:41
【问题描述】:
最近我们从 2019R1 升级到 2020 R2,我们对 JAMS 包进行了一些自定义,即使我们进行了自定义,我们在 2019R1 中也没有遇到任何问题,在这个新版本 2020 R2 中,我们在发布劳动力交易时遇到了另一个流程错误,所以我排除了我们所有的扩展图形文件并进行了验证,但仍然面临同样的问题。
收到的错误是“错误:另一个进程添加了 'AMProdEvnt' 记录。您的更改将丢失。”
根据跟踪,错误似乎发生在 Persist() 期间 AMReleaseProcess.cs 的第 350 行,但源代码似乎在第 350 行附近的任何地方都没有引用 AMProdEvnt 或 Persist。
跟踪的最后部分:
Error: Another process has added the 'AMProdEvnt' record. Your Changes will be lost.
at PX.Data.PXCache`1.PersistInserted(Object row, Boolean bypassInterceptor)
at PX.Data.PXCache`1.Persist(PXDBOperation operation)
at PX.Data.PXGraph.Persist(Type cacheType, PXDBOperation operation)
at PX.Data.PXGraph.Persist()
at PX.Objects.AM.AMReleaseProcess.cs Ln 350 AMReleaseProcess.Persist()
at PX.Objects.AM.AMReleaseProcess.cs Ln 511 AMReleaseProcess.ReleaseDocProc(AMBatch doc)
at PX.Objects.AM.AMDocumentRelease.cs Ln 49 AMDocumentRelease.ReleaseDoc(List`1 list, Boolean isMassProcess)
由于跟踪似乎与构建 20.207.0012 附带的源代码不匹配,我无法在源代码中找到问题。什么会导致在应该执行实际添加记录的过程中已经添加记录?
这是跟踪的屏幕截图。我们在 - 2020R2 Build -20.207.0012
【问题讨论】:
-
当我查看 20.207.0012 上的 CodeRepository 时,跟踪中的行号似乎与代码存储库文件不一致。例如,AMReleaseProcess 的第 350 行是 if(!UpdateProduction),这似乎不太可能在持久化中引发错误。您可以尝试运行调试或使用 Request Profiler 查看所有被触发的 SQL 语句。 dnSpy 非常适合跟踪正在运行的进程。我实际上并没有使用 Mfg 模块,所以我只能分享我的观察结果。 @Brendan 可能是我所知道的寻求进一步帮助的最佳资源。
-
感谢 Brain Stevens 的投入,会尝试并随时通知您。
-
@BrianStevens:帖子已正确关闭。现在图像已被替换为相同的文本表示,它可以重新打开。
标签: acumatica