定制DAC上的BQL引用SOOrder.orderNbr不反映当前订单Nbr

时间:2018-04-09 17:03:52

标签: acumatica

我们有一个名为UsrNonRelatedScanField的测试DAC,它有两个字段: OrderNbr ScanStatus

这是我们获取正确的ordernbr并将其分配给SOOrderExt字段的简单查询:

NonRelatedScanField lastScan = PXSelect<NonRelatedScanField, 
                               Where<NonRelatedScanField.orderNbr,                                
                               Equal<Required<SOOrder.orderNbr>>>>.Select(Base, row.OrderNbr);
if(lastScan != null)
{
    rowExt.UsrNonRelatedScanField = lastScan.ScanStatus;
}

此逻辑保存在SOOrder_RowSelecting()方法中。

完整方法实施

    protected virtual void SOOrder_RowSelecting(PXCache sender, PXRowSelectingEventArgs e)
    {
        SOOrder row = (SOOrder)e.Row;
        if (row == null) return;
        SOOrderExt rowExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(row);

        NonRelatedScanField lastScan = PXSelect<NonRelatedScanField, 
                                       Where<NonRelatedScanField.orderNbr, 
                                       Equal<Required<SOOrder.orderNbr>>>>.Select(Base, row.OrderNbr);

        if (lastScan != null)
        {
            rowExt.UsrNonRelatedScanField = lastScan.ScanStatus;
        }
    }

预期结果:从lastScan DAC获取当前订单扫描状态

实际结果:仅在打开的初始订单上正确填充。选择其他订单时,旧值将持续,除非我手动刷新页面。手动刷新时,会输入正确的数据。

我过去在使用BQL查询时没有遇到任何问题,此特定查询的行为不符合预期。

谢谢

0 个答案:

没有答案