Acumatica 如何使用BQL生成具有特定表列的SQL

Acumatica 如何使用BQL生成具有特定表列的SQL,acumatica,Acumatica,当我用BQL语法连接两个DAC时,它会生成SQL,从两个表中选择所有列。如果我想选择一个表的列以获得良好的执行计划,该怎么办?您可以尝试查看PXProjection,其中列被定义为projection类中的字段PXProjection类似于Acumatica中作为DAC的SQL视图。只要在Acumatica源代码中搜索PXProjection,您就会找到许多示例。请注意,在类中,您需要为每个“列”设置BqlField,以便流程知道投影字段映射到哪个table.field 快速连接下面的投影。在本

当我用BQL语法连接两个DAC时,它会生成SQL,从两个表中选择所有列。如果我想选择一个表的列以获得良好的执行计划,该怎么办?

您可以尝试查看
PXProjection
,其中列被定义为projection类中的字段
PXProjection
类似于Acumatica中作为DAC的SQL视图。只要在Acumatica源代码中搜索
PXProjection
,您就会找到许多示例。请注意,在类中,您需要为每个“列”设置
BqlField
,以便流程知道投影字段映射到哪个table.field

快速连接下面的投影。在本例中,DAC中只有一列,它映射到
APRegister.docType

[PXProjection(typeof(Select2<APRegister, 
        InnerJoin<APInvoice, On<APInvoice.docType, Equal<APRegister.docType>, 
            And<APInvoice.refNbr, Equal<APRegister.refNbr>>>, 
        InnerJoin<APPayment, On<APPayment.docType, Equal<APRegister.docType>, 
            And<APPayment.refNbr, Equal<APRegister.refNbr>>>>>, 
        Where<APRegister.docType, Equal<APDocType.quickCheck>, 
            Or<APRegister.docType, Equal<APDocType.voidQuickCheck>>>>), Persistent = true)]
[Serializable]
public partial class APQuickCheck : APRegister
{
    #region DocType
    public new abstract class docType : PX.Data.IBqlField
    {
    }
    [PXDBString(3, IsKey = true, IsFixed = true, BqlField = typeof(APRegister.docType))]
    [PXDefault(APDocType.QuickCheck)]
    [APQuickCheckType.List()]
    [PXUIField(DisplayName = "Type", Visibility = PXUIVisibility.SelectorVisible, Enabled = false)]
    [PXFieldDescription]
    public override String DocType
    {
        get
        {
            return this._DocType;
        }
        set
        {
            this._DocType = value;
        }
    }
    #endregion
}
[PXProjection(typeof(Select2),Persistent=true)]
[可序列化]
公共部分类APQuickCheck:APRegister
{
#区域DocType
公共新抽象类docType:PX.Data.IBqlField
{
}
[PXDBString(3,IsKey=true,IsFixed=true,BqlField=typeof(APRegister.docType))]
[PXDefault(APDocType.QuickCheck)]
[APQuickCheckType.List()]
[PXUIField(DisplayName=“Type”,可见性=PXUIVisibility.SelectorVisible,Enabled=false)]
[现场描述]
公共重写字符串DocType
{
得到
{
返回此文件。\u DocType;
}
设置
{
该值为.\u DocType=value;
}
}
#端区
}