如何在项目报价屏幕上添加字段 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
我解决这个问题的方法是:
- 在table CRQuote
中添加字段
- 扩展图形并通过包含新的 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
}
早上好,我想在此屏幕项目报价单上添加一个新字段,但这样做时我收到此消息,即 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
我解决这个问题的方法是:
- 在table CRQuote 中添加字段
- 扩展图形并通过包含新的 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
}