如何在项目报价屏幕上添加字段 PQ000025

how to add a field on the Project Quotes screen PQ000025

早上好,我想在此屏幕项目报价单上添加一个新字段,但这样做时我收到此消息,即 table 不存在。 应该怎么实现或者用什么方法实现。

提前致谢

Imagen 01

数据库中添加的字段

enter image description here

他在数据库中添加了字段,然后我生成了我的扩展。

namespace PX.Objects.CR
{
    public class PMQuoteExt : PXCacheExtension<PX.Objects.CR.CRQuote>
    {
        #region UsrNota
        [PXDBString(-1, InputMask = "", BqlField = typeof(PMQuoteStandaloneExt.usrNotaText))]

        [PXUIField(DisplayName = "Nota ")]

        public virtual string UsrNotaText { get; set; }
        public abstract class usrNotaText : IBqlField { }
        #endregion
    }

    public class PMQuoteStandaloneExt : PXCacheExtension<PX.Objects.CR.Standalone.CRQuote>
    {
        #region UsrNota
        [PXDBString(-1, InputMask = "")]
        [PXUIField(DisplayName = "Nota ")]

        public virtual string UsrNotaText { get; set; }
        public abstract class usrNotaText : IBqlField { }
        #endregion
    }
}




    public class PMQuoteMaint_Extension : PXGraphExtension<PMQuoteMaint>
    {           
        public PXSelect<PX.Objects.CR.Standalone.CRQuote> Test;            

    }

但是,当我记录时,它没有填写该字段。

我犯了错误或做错了。 可以告诉我吗

谢谢

PMQuote 不是实际的数据库 table,而是 tables 之间的 BQL 投影:

  • CR.Standalone.CRQuote
  • CROpportunityRevision
  • CR.Standalone.CROpportunity

我解决这个问题的方法是:

  1. 在table CRQuote
  2. 中添加字段
  3. 扩展图形并通过包含新的 CRQuote 字段覆盖投影。

更新: 根据 @HB_Acumatica 建议,第 2 步将简化为 DAC 扩展(不需要 Graph 扩展)。在后续的 Acumatica 版本中维护起来更简单!

更新 2:

扩展 DAC 在您的问题中看起来不正确。请记住,您应该扩展原始 table (CRQuote) 和投影,以便保留值。 以下定义对我来说是正确的:

//Projection extension
  public class PMQuoteExt : PXCacheExtension<PMQuote>
  {
    #region UsrCustomField
    [PXDBString(100, BqlField = typeof(CRQuoteExt.usrCustomField))]
    [PXUIField(DisplayName="Custom Field")]
    public virtual string UsrCustomField { get; set; }
    public abstract class usrCustomField : IBqlField { }
    #endregion
  }
//Actual Table extension     
public class CRQuoteExt : PXCacheExtension<PX.Objects.CR.Standalone.CRQuote>
{
    #region UsrCustomField
    [PXDBString(100)]
    [PXUIField(DisplayName="Custom Field")]
    public virtual string UsrCustomField { get; set; }
    public abstract class usrCustomField : IBqlField { }
    #endregion

}