据我所知,我已经正确设置了此自动编号字段。过去,我已经完成了多个自动编号设置,但似乎不希望这样做,而且我也看不到为什么。
这是存储自动编号的DAC对象:
[PXDBString(15, IsUnicode = true, InputMask = "")]
[PXSelector(typeof(Numbering.numberingID), DescriptionField = typeof(Numbering.descr))]
[PXUIField(DisplayName = "Catalog Header Nbr")]
public virtual string CatalogHeaderNbr { get; set; }
public abstract class catalogHeaderNbr : IBqlField { }
这是将其分配给CD字段:
[PXDBString(15, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC", IsKey = true)]
[AutoNumber(typeof(CFBSNumberingSetup.catalogHeaderNbr), typeof(AccessInfo.businessDate))]
[PXUIField(DisplayName = "Catalog ID")]
[PXDefault]
[PXSelector(typeof(Search<CFBSCatalogHeader.catalogCD>),
new Type[]
{
typeof(CFBSCatalogHeader.catalogCD),
typeof(CFBSCatalogHeader.vendorID),
typeof(CFBSCatalogHeader.descr)
},
DescriptionField = typeof(CFBSCatalogHeader.catalogCD)
)]
public virtual string CatalogCD { get; set; }
public abstract class catalogCD : IBqlField { }
“编号序列”屏幕(请注意,我的符号是新的):
我创建的“编号设置”页面具有已分配的存储值:
保存时出现错误(请注意,符号显示为SELECT而不是NEW):
错误跟踪:
11/7/2018 10:19:34 AM错误: 值不能为空。 参数名称:格式
at System.String.FormatHelper(IFormatProvider提供程序,字符串格式,ParamsArray args) 在System.String.Format(字符串格式,Object []参数) 在PX.Data.PXMessages.LocalizeFormat(String strMessage,String&MessagePrefix,Object [] args) 在PX.Data.PXException..ctor(字符串格式,Object []参数) 在F:\ Bld \ AC-FULL2018R112-JOB1 \ sources \ WebSites \ Pure \ PX.Objects \ CS \ Descriptor \ Attribute.cs:line 2808中的PX.Objects.CS.AutoNumberAttribute.RowPersisting(PXCache sender,PXRowPersistingEventArgs e) 在PX.Data.PXCache.OnRowPersisting(对象项,PXDBOperation操作) 在PX.Data.PXCache`1.PersistInserted(对象行) 在PX.Data.PXCache`1.Persist(PXDBOperation操作) 在PX.Data.PXGraph.Persist(类型cacheType,PXDBOperation操作) 在PX.Data.PXGraph.Persist() 在PX.Data.PXSave`1.d__2.MoveNext() 在PX.Data.PXAction`1.d__31.MoveNext() 在PX.Data.PXAction`1.d__31.MoveNext() 在PX.Web.UI.PXBaseDataSource.tryExecutePendingCommand(String viewName,String [] sortcolumns,Boolean []降序,Object []搜索,Object []参数,PXFilterRow []过滤器,DataSourceSelectArguments参数,Boolean&closeWindowRequired,Int32&adapterStartRow,Int32&adapterTotalRows ) 在PX.Web.UI.PXBaseDataSource.ExecuteSelect(字符串viewName,DataSourceSelectArguments参数,PXDSSelectArguments pxarguments)
答案 0 :(得分:2)
确保使用该编号顺序在图形中具有用于设置表的PXSetup视图。从屏幕快照的外观来看,它没有找到您期望的编号顺序,因为新符号不是您期望的符号。这可能是由于缺少PXSetup视图导致缺少设置。
在后 How to implement auto generating document number on custom screen 引用:“确保在构建文档的图形中将PXSetup视图包括到设置表中。”
答案 1 :(得分:0)
您可能希望在RowPersisting期间尝试处理分配,例如:
public virtual void DAC_RowPersisting(PXCache cache, PXRowPersistingEventArgs e)
{
DAC record = (DAC)e.Row;
if (record != null)
{
if (this.DAC.Cache.GetStatus(record) == PXEntryStatus.Inserted)
{
string nextNumber = AutoNumberAttribute.GetNextNumber
(DAC.Cache, record, "CATHEADNBR", DateTime.Now);
record.CatalogCD = nextNumber;
}
}
}