Axapta 在SalesTable表单中,当商品已经提货时,如何保护销售线维度?

Axapta 在SalesTable表单中,当商品已经提货时,如何保护销售线维度?,axapta,dynamics-ax-2009,Axapta,Dynamics Ax 2009,在我们的Dynamics Ax 2009配置中,我们希望避免在提货或交货后更改库存尺寸。 有时,当交易已经登记时,用户会更改销售线上的仓库、位置和库存尺寸 我不知道如何通过改变库存或销售参数来保护这一点 我试图通过改变SalesTable表单的Salesline数据源中的active方法来解决这个问题,该方法调用一个特定的方法: if (InventDim_Ds.allowEdit()) { if (SalesLine.pickedInTotalSalesUnit() != 0 || S

在我们的Dynamics Ax 2009配置中,我们希望避免在提货或交货后更改库存尺寸。 有时,当交易已经登记时,用户会更改销售线上的仓库、位置和库存尺寸

我不知道如何通过改变库存或销售参数来保护这一点

我试图通过改变SalesTable表单的Salesline数据源中的active方法来解决这个问题,该方法调用一个特定的方法:

if (InventDim_Ds.allowEdit())
{
    if (SalesLine.pickedInTotalSalesUnit() != 0 || SalesLine.DeliveredInTotal() != 0)
    {
        InventDim_Ds.allowEdit(false);
    }
}
但它不起作用,或者工作得太好:现在不可能更改库存维度,即使没有挑选或交付任何东西


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

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

如果你允许的话

因为它不允许在行之间进行更改。如果选择了一行,它将禁用InventDim\u Ds,然后当您移动到触发活动方法的下一个销售行时,它将看到它被禁用,而不会输入If语句

试试这个:

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

谢谢,它起作用了。我以这种方式编写代码是因为我不知道允许在InventDim上进行编辑的其他原因,并且假设此数据源与SalesLine同时激活。这样就可以了,;我必须假设控制Inventdim是否可编辑。