2017-08-07 3 views
0

Ich arbeite am Projekt Budget Bildschirm von Acumatica, der Bildschirm verwendet die Tabelle PMProjectStatusEx, die eine Projektionstabelle von PMProjectStatus ist. Also habe ich die PMProjectStatus-Tabelle erweitert und dort ein Feld hinzugefügt. Ich habe auch PMProjectStatusEx erweitert, um das gleiche Feld hinzuzufügen und es dem Bildschirm hinzuzufügen. Aber im Gegensatz zu den Standardfeldern, die die physische Tabelle PMProjectStatus aktualisieren, aktualisiert mein hinzugefügtes Feld die physische Tabelle nicht. Was könnte der Grund dafür sein? Unten ist mein CodeAcumatica Erweitern PMProjectStatusEx

Dank

public class PMProjectStatusExt : 
PXCacheExtension<PX.Objects.PM.PMProjectStatus> 
{ 
    #region UsrMarkupPct 
    public abstract class usrMarkupPct : PX.Data.IBqlField 
    { 
    } 
    protected Decimal? _UsrMarkupPct; 
    [PXDBDecimal(6, MinValue = 0, MaxValue = 1000)] 
    //[PXDefault(TypeCode.Decimal, "0.0")] 
    [PXUIField(DisplayName = "Markup %")] 
    public virtual Decimal? UsrMarkupPct 
    { 
     get 
     { 
      return this._UsrMarkupPct; 
     } 
     set 
     { 
      this._UsrMarkupPct = value; 
     } 
    } 
    #endregion 


public class PMProjectStatusExExt : 
PXCacheExtension<PX.Objects.PM.PMProjectStatusEx> 
    { 
     #region UsrMarkupPct 
     public abstract class usrMarkupPct : PX.Data.IBqlField 
     { 
     } 
     protected Decimal? _UsrMarkupPct; 
     [PXDBDecimal(6, MinValue = 0, MaxValue = 1000, BqlField = typeof(PMProjectStatusExt.usrMarkupPct))] 
     [PXDefault(TypeCode.Decimal, "0.0")] 
     [PXUIField(DisplayName = "Markup %")] 
     public virtual Decimal? UsrMarkupPct 
     { 
      get 
      { 
       return this._UsrMarkupPct; 
      } 
      set 
      { 
       this._UsrMarkupPct = value; 
      } 
     } 
     #endregion 

Antwort

0

Wenn Sie Felder mit dem DATA-ACCESS-Bereich des Projekt-Editor hinzufügen, wird es DB-Skripte erzeugt die Tabelle hinter der Szene zu aktualisieren: enter image description here

enter image description here

Wenn Sie im Abschnitt CODE Felder hinzufügen, die eine DAC-Erweiterung verwenden, werden die DB-Skripte nicht generiert.

In diesem Fall müssen Sie die Skripts im Abschnitt DB-Skripte manuell hinzufügen.

EDIT

Ein Weg, um manuell DB Feld in DB Scripts hinzuzufügen ist:

IF NOT EXISTS(SELECT * FROM Sys.Columns WHERE Name = N'UsrMarkupPct' and 
       Object_ID = Object_ID(N'PMProjectStatus')) 
BEGIN 
    ALTER TABLE PMProjectStatus ADD UsrMarkupPct DECIMAL(19,6) 
END 
GO