希望这不是一个愚蠢的问题 - 我可以使用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吗?
答案 0 :(得分:1)
它会添加它,但是你不能将它作为&#34; Contract.Usr ...&#34;它会像&#34; ContractExtension.Usr ...&#34;。
查看DAC扩展所在的数据类,并查看该名称是什么。如果您的BQL位于不同的名称空间,您还需要添加对codeclass命名空间的引用。