数据库中是否新增了可供BQL查询的字段?

Is a newly added field available for BQL to query in database?

希望这不是一个愚蠢的问题 - 我可以使用 BQL 查询我刚刚通过自定义添加到数据库中的新字段吗?

我刚刚通过 "System->Customization" 向 "contract" table 添加了一个新字段 - 我在那里创建了一个项目并添加了一个名为 "ProductCode" 的新字段(它自动成为 "UsrProductCode" in database),编译发布成功后,字段确实显示在"contract" table 和"contract template" screen (CT202000) 中,正如我所料,然而,我收到错误:

 The type name 'UsrProductCode' does not exist in the type 'PX.Objects.CT.Contract' in file: Code#SOOrderEntry(80)

然后我尝试在 BQL 中使用此字段,如下所示:

// Lookup contract template ID
   Contract template = PXSelect<Contract,
                                Where<Contract.isTemplate, Equal<boolTrue>, And<Contract.UsrProductCode, Equal<Required<Contract.UsrProductCode>>>>>
                            .Select(Base, inventoryCD);

我认为通过自定义添加新字段会自动使其可用于 BQL 查询,但看来我错了 - 我需要做什么才能使其能够在 BQL 中使用?

感谢您的帮助。

已编辑:

根据@Jeff Williams 的建议,我试图找出与我的自定义相关的 class 定义文件 - 我找到的唯一文件是 "PX_Objects_CT_Contract_extensions.cs",它位于 "C:\Program Files (x86)\Acumatica ERP\AcumaticaERP\App_Code\Caches" 下代码非常简单,如下所示:

public class PX_Objects_CT_Contract_Extension_AddColumn: PXCacheExtension<PX.Objects.CT.Contract>{

        #region UsrProductCode

        [PXDBString(30)]
        [PXUIField(DisplayName="Product Code")]

        public virtual string UsrProductCode{get;set;}
        public abstract class usrProductCode : IBqlField{}

        #endregion

我也尝试在 BQL 中使用 "PX_Objects_CT_Contract_Extension_AddColumn.UsrProductCode",但在编译期间出现错误:

'PX_Objects_CT_Contract_Extension_AddColumn.UsrProductCode' is a 'property' but is used like a 'type' in file:

有人可以告诉我还需要做什么才能使这个新字段可用于 BQL 吗?

它确实添加了它,但是您不能将其引用为 "Contract.Usr..." 它会在 "ContractExtension.Usr...".

之类的下面

查看 DAC 扩展所在的数据 class 并查看该名称是什么。如果您的 BQL 使用不同的名称 space,您还需要添加对代码class 名称space 的引用。