是否有新添加的字段可供BQL在数据库中查询?

时间:2015-08-12 17:46:07

标签: acumatica

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

我刚刚通过“System-> Customization”在“合同”表中添加了一个新字段 - 我在那里创建了一个项目并添加了一个名为“ProductCode”的新字段(它在数据库中自动成为“UsrProductCode”),并且在成功编译和发布之后,字段确实显示在“合同”表以及“合同模板”屏幕(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的建议,我试图找出与我的自定义相关的类定义文件 - 我找到的唯一文件是“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吗?

1 个答案:

答案 0 :(得分:1)

它会添加它,但是你不能将它作为&#34; Contract.Usr ...&#34;它会像&#34; ContractExtension.Usr ...&#34;。

查看DAC扩展所在的数据类,并查看该名称是什么。如果您的BQL位于不同的名称空间,您还需要添加对codeclass命名空间的引用。