Acumatica 将供应商查找添加到自定义字段

Acumatica 将供应商查找添加到自定义字段,acumatica,Acumatica,我在SO行中为vendorid添加了一个自定义字段。是的,我知道有一个,但我们正在建立一些新的逻辑。我添加了整数字段,它显示在网格上。我正在查找供应商。我是从这个开始的 Where<AP.Vendor.type, NotEqual<BAccountType.employeeType>>>))] 有人有什么想法吗 评论太长,但更多的是建议而不是答案。尝试构建自己的PX选择器。我有一个自定义DAC,它需要存储两个供应商,我不得不放弃AP.Vendor属性来创建一个自定

我在SO行中为vendorid添加了一个自定义字段。是的,我知道有一个,但我们正在建立一些新的逻辑。我添加了整数字段,它显示在网格上。我正在查找供应商。我是从这个开始的

Where<AP.Vendor.type, NotEqual<BAccountType.employeeType>>>))]

有人有什么想法吗

评论太长,但更多的是建议而不是答案。尝试构建自己的PX选择器。我有一个自定义DAC,它需要存储两个供应商,我不得不放弃AP.Vendor属性来创建一个自定义PXSelector,以使我的工作正常。这是我的一本书。在我的例子中,我需要能够看到哪一个被定义为仓库的首选供应商,我只想看到与我的InventoryID关联的供应商。SSiNitBranch是一个自定义DAC,也可在此DAC的使用范围内使用。关键是,如果您需要一个从头开始创建自己的示例,请使用此示例。如果这不是您想要完成任务的方式,那么至少您可以确定问题是AP.Vendor属性的用例还是其他问题

[PXSelector(
        typeof(Search2<
            Vendor.bAccountID,
            InnerJoin<POVendorInventory,
                On<POVendorInventory.vendorID, Equal<Vendor.bAccountID>,
                And<POVendorInventory.inventoryID, Equal<Current<SSINItemBranch.inventoryID>>>>,
            LeftJoin<INItemSite, On<INItemSite.inventoryID, Equal<POVendorInventory.inventoryID>,
                And<INItemSite.preferredVendorID, Equal<POVendorInventory.vendorID>,
                And<INItemSite.preferredVendorLocationID, Equal<POVendorInventory.vendorLocationID>,
                And<INItemSite.preferredVendorOverride, Equal<True>>>>>>>,
                Where<Vendor.type, Equal<BAccountType.vendorType>>>),
        typeof(Vendor.acctCD),
        typeof(Vendor.acctName),
        typeof(POVendorInventory.vendorLocationID),
        typeof(INItemSite.preferredVendorOverride),
        typeof(POVendorInventory.vendorInventoryID),
        typeof(POVendorInventory.vLeadTime),
        SubstituteKey = typeof(Vendor.acctCD),
        DescriptionField = typeof(Vendor.acctName),
        Filterable = true
        )]
TL;博士

从字段中删除PXDBInt属性

这里的问题不是Where条件,而是字段的属性定义

 [PXDBInt]  
 [PXUIField(DisplayName="Vendor ID")] 
 [AP.Vendor(typeof(Search<BAccountR.bAccountID, Where<AP.Vendor.type,
 NotEqual<BAccountType.employeeType>>>))]
实际上,这里有两个DBField属性。您拥有包含PXDBIntAttribute的PXDBIntAttribute和供应商属性。

因此,框架具有错误的字段到db列的映射,这导致了奇怪的错误

如果您使用Visual studio,我建议您尝试Acuminator扩展

它突出显示了这类错误

能否为错误添加堆栈跟踪?这可能会使我们对错误有所了解。完整字段定义也可能有帮助[PXDBInt][PXUIFieldDisplayName=供应商ID][AP.VendortypeofSearch]您确定这是唯一可能导致问题的原因吗?也许还有别的东西。好吧,如果我把它取下来,它会很好用的。如果我加上它,它就会失败。我想可能是我的代码,所以我清除了自定义项中的所有代码并发布了该自定义项,但我仍然遇到了问题。所以,有趣的是,我去掉了所有自定义项,然后在poorder表中添加了一个具有相同属性的字段。同样的错误。这是关于查找不起作用的东西。
[PXSelector(
        typeof(Search2<
            Vendor.bAccountID,
            InnerJoin<POVendorInventory,
                On<POVendorInventory.vendorID, Equal<Vendor.bAccountID>,
                And<POVendorInventory.inventoryID, Equal<Current<SSINItemBranch.inventoryID>>>>,
            LeftJoin<INItemSite, On<INItemSite.inventoryID, Equal<POVendorInventory.inventoryID>,
                And<INItemSite.preferredVendorID, Equal<POVendorInventory.vendorID>,
                And<INItemSite.preferredVendorLocationID, Equal<POVendorInventory.vendorLocationID>,
                And<INItemSite.preferredVendorOverride, Equal<True>>>>>>>,
                Where<Vendor.type, Equal<BAccountType.vendorType>>>),
        typeof(Vendor.acctCD),
        typeof(Vendor.acctName),
        typeof(POVendorInventory.vendorLocationID),
        typeof(INItemSite.preferredVendorOverride),
        typeof(POVendorInventory.vendorInventoryID),
        typeof(POVendorInventory.vLeadTime),
        SubstituteKey = typeof(Vendor.acctCD),
        DescriptionField = typeof(Vendor.acctName),
        Filterable = true
        )]
 [PXDBInt]  
 [PXUIField(DisplayName="Vendor ID")] 
 [AP.Vendor(typeof(Search<BAccountR.bAccountID, Where<AP.Vendor.type,
 NotEqual<BAccountType.employeeType>>>))]