Acumatica 带搜索的筛选选择器

Acumatica 带搜索的筛选选择器,acumatica,Acumatica,我有一个使用我声明的自定义dac的自定义网格。最初,我将PXselector属性设置为POOrder.orderNbr 有了这个选择器,它可以抓取我的网格选择器中的所有穷人 [PXDBString(50, IsKey = true, IsUnicode = true, InputMask = "")] [PXSelector(typeof(POOrder.orderNbr))] [PXUIField(DisplayName = "Po#")] public string

我有一个使用我声明的自定义dac的自定义网格。最初,我将PXselector属性设置为POOrder.orderNbr

有了这个选择器,它可以抓取我的网格选择器中的所有穷人

 [PXDBString(50, IsKey = true, IsUnicode = true, InputMask = "")]
    [PXSelector(typeof(POOrder.orderNbr))]
    [PXUIField(DisplayName = "Po#")]
    public string Po { get; set; }

    public class po : IBqlField { }
但我希望选择器过滤出现在Document details->POReceiptLine上的poorder。我尝试使用搜索进行筛选,但仅获取收据上的最低值POOrder.ordnbr。下面的图片应该说明我的意思。我希望它显示所有POOrder.orderNbr,但它只检索第一个最低值的订单

[PXDBString50,IsKey=true,IsUnicode=true,InputMask=] [PXSelector搜索类型] [PXUIFieldDisplayName=Po] 公共字符串Po{get;set;} 公共类po:IBqlField{}


我相信,如果您内部加入POReceiptLine DAC,然后聚合相关的采购订单,以消除可能的重复,会更好:

[PXSelector(typeof(Search5<POOrder.orderNbr, 
    InnerJoin<POReceiptLine, On<POReceiptLine.pOType, Equal<POOrder.orderType>,
        And<POReceiptLine.pONbr, Equal<POOrder.orderNbr>,
        And<POReceiptLine.receiptNbr, Equal<Current<POReceipt.receiptNbr>>>>>>,
    Aggregate<GroupBy<POOrder.orderType,
        GroupBy<POOrder.orderNbr>>>>))]

我相信,如果您内部加入POReceiptLine DAC,然后聚合相关的采购订单,以消除可能的重复,会更好:

[PXSelector(typeof(Search5<POOrder.orderNbr, 
    InnerJoin<POReceiptLine, On<POReceiptLine.pOType, Equal<POOrder.orderType>,
        And<POReceiptLine.pONbr, Equal<POOrder.orderNbr>,
        And<POReceiptLine.receiptNbr, Equal<Current<POReceipt.receiptNbr>>>>>>,
    Aggregate<GroupBy<POOrder.orderType,
        GroupBy<POOrder.orderNbr>>>>))]

选择器中的主要问题是,您正在查找订单号等于当前收单行的POOrder。这意味着,根据所选的行,值将发生变化,但始终只产生一个结果。然后,解决方案是将条件改为位于采购收据文档上

要做到这一点,你有两个选择。您可以直接搜索POReceiptLine.poNbr,但选择器将显示该表中的列,或者将POOrder加入POReceiptLine

在POReceiptLine上搜索 [PXSelectortypeofSearch,DirtyRead=true] 在POOrder上搜索 [PXSelector搜索类型2]
还要注意参数DirtyRead=true。此参数将告诉选择器在缓存中获取其信息,而不仅仅是从数据库中获取。因为您正在从同一页中选择某些内容,所以需要先保存整个文档,然后才能选择其他记录。不幸的是,它不能与第二个选项一起工作,因为连接是在数据库级别完成的

选择器中的主要问题是,您正在查找订单号等于当前收单行的POOrder。这意味着,根据所选的行,值将发生变化,但始终只产生一个结果。然后,解决方案是将条件改为位于采购收据文档上

要做到这一点,你有两个选择。您可以直接搜索POReceiptLine.poNbr,但选择器将显示该表中的列,或者将POOrder加入POReceiptLine

在POReceiptLine上搜索 [PXSelectortypeofSearch,DirtyRead=true] 在POOrder上搜索 [PXSelector搜索类型2]
还要注意参数DirtyRead=true。此参数将告诉选择器在缓存中获取其信息,而不仅仅是从数据库中获取。因为您正在从同一页中选择某些内容,所以需要先保存整个文档,然后才能选择其他记录。不幸的是,它不能与第二个选项一起工作,因为连接是在数据库级别完成的

忘记添加此项在采购订单收据页忘记添加此项在采购订单收据页谢谢Ruslan!我将尝试您和Phillipe给我的所有实现选项。我真的很感谢您的帮助。我最终使用了这个实现,消除重复也是我最初在选择器中的目标。再次感谢你们两位!谢谢你,罗斯兰!我将尝试您和Phillipe给我的所有实现选项。我真的很感谢您的帮助。我最终使用了这个实现,消除重复也是我最初在选择器中的目标。再次感谢你们两位!感谢您解释这两种实现之间的差异,这非常有帮助,我对此表示感谢。感谢您解释这两种实现之间的差异,这非常有帮助,我对此表示感谢。