【问题标题】:Acumatica Create Shipment Lock Violation Exception IssueAcumatica 创建装运锁定违规异常问题
【发布时间】:2016-02-02 23:52:27
【问题描述】:

在 Acumatica 中通过 API 创建货件时,我收到错误消息

另一个进程更新了“SOOrder”记录。您的更改将会丢失

我们创建Shipment的方式如下:

  1. 将销售订单添加到装运中。
  2. 保存。
  3. 清除屏幕。 oScreen.SO302000Clear();
  4. 加载创建的货件。
  5. 添加货件详细信息,例如仓位、货件数量、批次/序列号等。
  6. 保存。

如果用户在创建后立即在 Acumatica 中加载创建的货件,则会出现此问题。然后,当 API 尝试发布货件详细信息(步骤 4 到 6)时,API 会抛出错误

PX.Data.PXLockViolationException:错误 #90:另一个进程已更新“SOOrder”记录。您的更改将会丢失。

在编辑当前在 UI 中打开的货件时,我们是否可以避免出现 Lock Violation 异常?

【问题讨论】:

    标签: exception process locking acumatica


    【解决方案1】:

    保存货件会触发长时间运行的异步操作。在执行任何其他操作之前,您需要等待此过程完成,方法是调用 GetProcessStatus() 并重试直到完成。否则,您将在第二次更新调用时遇到并发问题。

    【讨论】:

    • 寻找类似的东西来了解我当前的图表是否处于长时间运行的过程中。我尝试寻找 GetProcessStatus 并没有看到任何东西(运行 Acumatica 5.3 版),但我确实找到了 PXLongOperation.GetStatus 并像这样使用它: PXLongOperation.GetStatus(this.UID) == PXLongRunStatus.InProcess 这是你所指的类似概念?
    • 您好,Gabriel,即使在实施 GetProcessStatus 后,此问题再次出现。我收到同样的错误:错误 #90:另一个进程已更新“SOOrder”记录。您的更改将会丢失。'。
    • @JoseJoya 您能否使用完整的代码示例更新原始问题,以便我们在测试/演示实例上复制错误?请让代码尽可能简单。
    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 2012-01-03
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多