我不得不在Visual项目中创建DAC扩展,而不是DAC类到定制中,因为我必须为几个字段定义下拉值,如果我通过自定义直接扩展DAC,则无法创建它。
下面是带有下拉字段及其值的DAC扩展的代码,来自Visual项目-
public class SOOrderExtension : PXCacheExtension<PX.Objects.SO.SOOrder>
{
#region Class DropDownValue
public static class DropDownValue
{
public const string Value1 = "1";
public const string Value2 = "2";
public const string Value3 = "3";
}
#endregion
#region UsrDropDown
[PXDBString(1)]
[PXUIField(DisplayName = "My DropDown")]
[PXStringList(new string[]
{
DropDownValue.Value1, DropDownValue.Value2, DropDownValue.Value3
},
new string[]
{
"One", "Two", "Three"
})]
public virtual string UsrDropDown { get; set; }
public abstract class usrDropDown : IBqlField { }
#endregion
}
这很好,它已经在SOOrder现有表中创建了新的用户定义字段。但是,如果我将任何新字段添加到此DAC扩展类中,它不会在SOOrder表中创建新字段,而只是在发布自定义时跳过。因此,我需要向定制中添加一个SQL脚本,以便将这些新字段添加到SOOrder表中。
我不知道这是否正确的做法。理想情况下,如果我在Visual中的DAC扩展中添加了新字段,那么它应该在SOOrder表中创建新字段,就像我将新字段直接添加到定制中一样。
发布于 2016-11-02 17:40:51
Krunal,Acumatica只在自定义项目管理器中声明新绑定DAC字段时才会在数据库中创建新列。当有人在Visual中直接在DAC扩展中声明新字段时,无法在数据库中自动创建新列。
请参阅下面显示如何在项目经理中直接声明自定义UsrDropDown的屏幕截图:

https://stackoverflow.com/questions/40382955
复制相似问题