在Acumatica自定义项目中创建视图语句

在Acumatica自定义项目中创建视图语句,acumatica,acumatica-kb,Acumatica,Acumatica Kb,有人知道如何将CREATEVIEWSQL语句推送到Acumatica定制项目中吗 我知道如何在SQL Management Studio中执行此操作,但通过定制项目执行此操作对Acumatica SaaS客户非常有用。您应该执行以下步骤: 在ManagementStudio中创建您的SQL视图(出于演示目的,让我坚持使用简单的PositivePay视图): 打开自定义项目并单击代码,然后根据SQL视图生成新的DAC,如下面的屏幕截图所示: 为新DAC定义关键字段并保存更改。对于肯定性,我们为

有人知道如何将CREATEVIEWSQL语句推送到Acumatica定制项目中吗


我知道如何在SQL Management Studio中执行此操作,但通过定制项目执行此操作对Acumatica SaaS客户非常有用。

您应该执行以下步骤:

  • 在ManagementStudio中创建您的SQL视图(出于演示目的,让我坚持使用简单的PositivePay视图):

  • 打开自定义项目并单击代码,然后根据SQL视图生成新的DAC,如下面的屏幕截图所示:

  • 为新DAC定义关键字段并保存更改。对于肯定性,我们为RefNbr字段顶部的PXDBString属性设置IsKeytrue

    [PXDBString(15, IsUnicode = true, InputMask = "", IsKey = true)]
    [PXUIField(DisplayName = "Ref Nbr")]
    public string RefNbr { get; set; }
    
  • 单击DB Scripts,在DBObject name中选择SQL视图名称,并按照以下模式将SQL脚本放入自定义脚本控件中:

    IF EXISTS
    (
        SELECT * FROM sys.views
        WHERE name = 'PositivePay' AND schema_id = SCHEMA_ID('dbo')
    )
    DROP VIEW [dbo].[PositivePay]
    GO
    
    CREATE VIEW [dbo].[PositivePay] AS
    SELECT
        APPayment.RefNbr,
        APPayment.ExtRefNbr,
        APRegister.DocDate,
        APRegister.OrigDocAmt,
        CashAccount.ExtRefNbr BankAccountID
    FROM APPayment 
        JOIN APRegister 
            ON APRegister.CompanyID = APPayment.CompanyID 
                AND APRegister.RefNbr = APPayment.RefNbr 
        JOIN CashAccount 
            ON APPayment.CashAccountID = CashAccount.AccountID 
                AND APPayment.CompanyID = CashAccount.CompanyID 
    WHERE APPayment.CompanyID = 2 AND APPayment.DocType= 'CHK'
    GO
    


  • 不建议使用视图,但是您可以在自定义项目中执行SQL脚本来创建视图,然后为该视图创建DAC。根据标准自定义,这是正确的。虽然你仍然可以。创建视图后,可以将其添加为自定义中的DAC。最好有一个链接属性用于向下搜索功能。谢谢@RuslanDev。这太棒了。
    IF EXISTS
    (
        SELECT * FROM sys.views
        WHERE name = 'PositivePay' AND schema_id = SCHEMA_ID('dbo')
    )
    DROP VIEW [dbo].[PositivePay]
    GO
    
    CREATE VIEW [dbo].[PositivePay] AS
    SELECT
        APPayment.RefNbr,
        APPayment.ExtRefNbr,
        APRegister.DocDate,
        APRegister.OrigDocAmt,
        CashAccount.ExtRefNbr BankAccountID
    FROM APPayment 
        JOIN APRegister 
            ON APRegister.CompanyID = APPayment.CompanyID 
                AND APRegister.RefNbr = APPayment.RefNbr 
        JOIN CashAccount 
            ON APPayment.CashAccountID = CashAccount.AccountID 
                AND APPayment.CompanyID = CashAccount.CompanyID 
    WHERE APPayment.CompanyID = 2 AND APPayment.DocType= 'CHK'
    GO