在 SalesTable 表单中,当物品已经被取走时,如何保护 salesLine 维度?

In SalesTable form, how to protect salesLine dimensions when items are already picked up?

在我们的 Dynamics Ax 2009 配置中,我们希望避免在提取或交付物品后更改库存尺寸。 有时用户在交易已经登记的情况下更改销售线上的面部库存维度(仓库、位置)。

我不知道有什么方法可以通过更改库存或销售参数来保护它。

我尝试通过更改 SalesTable 表单的 Salesline 数据源中的 active() 方法来解决此问题,该方法调用特定方法:

if (InventDim_Ds.allowEdit())
{
    if (SalesLine.pickedInTotalSalesUnit() != 0 || SalesLine.DeliveredInTotal() != 0)
    {
        InventDim_Ds.allowEdit(false);
    }
}

但它不起作用,或者效果太好:现在无法更改库存尺寸,即使没有拣选或交付任何东西。

我认为这与销售线和维度之间的 link 有关,但我不知道如何修复我的代码。

乍一看,您的问题似乎在于:

if (InventDim_Ds.allowEdit())

因为它不允许行与行之间的更改。如果选择了一行,它将禁用 InventDim_Ds,然后当您移动到下一个 SalesLine 触发 active() 方法时,它将看到它被禁用并且不会进入 if声明。

试试这个:

InventDim_ds.allowEdit(!salesLine.pickedInTotalSalesUnit() && !salesLine.deliveredInTotal());