gpt4 book ai didi

axapta - 非常快速地创建许多批处理(SysOperation Framework)来执行类似的过程 - "Cannot edit a record in LastValue (SysLastValue)"?

转载 作者:行者123 更新时间:2023-12-02 08:57:37 40 4
gpt4 key购买 nike

我有一个 SysOperation Framework 进程,它创建一个 ReliableAsynchronous 批处理来发布装箱单,并且一次创建多个。

根据我单击创建它们的速度,我得到:无法编辑 LastValue (SysLastValue) 中的记录。
由于另一用户进程删除了该记录或更改了记录中的一个或多个字段,因此发生更新冲突。

还有

无法在 LastValue (SysLastValue) 中创建记录。用户ID:t编辑a,类(class)。
该记录已存在。

在 BatchHistory 中的其中几个上。我设置了 this.parmLoadFromSysLastValue(false); 。我不确定如何防止写入 SysLastValue 表。

知道会发生什么吗?

最佳答案

我也经常遇到这种异常,因此我养成了在服务操作中捕获DuplicateKeyException的习惯。当它被抛出时,捕获它并重试(默认为 5x)。当许多进程同时运行时就会发生该错误,就像您现在所做的那样。

DupplicateKeyException 可以在事务中捕获,因此您可以通过在 SysLastValue 表中执行插入的代码周围放置 try/catch 来改进(如果您可以找到代码。

据我所知,这些是唯一在该表中插入记录的情况(可能在内核中除外):

  • InventUnusedDimCleanUp.serialize()
  • SysAutoSemaphore.autoSemaphore()

在那里放置一个断点,看看该代码是否被执行。如果是这样,您可以添加带有 retry 的 try/catch 并查看是否可以“修复”它。

您还可以使用跟踪主控室和跟踪解析器来确定该记录插入的位置(如果它不是这两个记录之一)。

我关于 LoadFromSysLastValue 的理论:我相信设置 this.parmLoadFromSysLastValue(false) 不起作用,因为它仅在对话框启动时才会考虑,而不是在执行操作时考虑。在批处理中,不会使用 SysLastValue 来初始化您的数据协定,因为您希望它使用您在数据协定中提供的确切参数。

关于axapta - 非常快速地创建许多批处理(SysOperation Framework)来执行类似的过程 - "Cannot edit a record in LastValue (SysLastValue)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765793/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com