Почему у меня не работает настройка авто нумерации? - PullRequest
0 голосов
/ 07 ноября 2018

Насколько я могу судить, я правильно настроил это поле автоматической нумерации. В прошлом я выполнил несколько настроек автоматической нумерации, но, похоже, этот режим не работает, и я не понимаю, почему.

Это объект ЦАП для хранения автоматической нумерации:

[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 { }

Экран последовательности нумерации (обратите внимание, символ, который у меня есть, НОВЫЙ):

enter image description here

Созданная мной страница настройки нумерации с присвоенным сохраненным значением:

enter image description here

Ошибка, которую я получаю при сохранении (обратите внимание, что символ показывает SELECT вместо NEW):

enter image description here

Ошибка трассировки:

11/7/2018 10:19:34 AM Ошибка: Значение не может быть нулевым. Имя параметра: формат

в System.String.FormatHelper (поставщик IFormatProvider, формат String, аргументы ParamsArray) в System.String.Format (формат String, аргументы Object []) в PX.Data.PXMessages.LocalizeFormat (String strMessage, String & MessagePrefix, Object [] args) в PX.Data.PXException..ctor (формат строки, Object [] args) в PX.Objects.CS.AutoNumberAttribute.RowPersisting (отправитель PXCache, PXRowPersistingEventArgs e) в F: \ Bld \ AC-FULL2018R112-JOB1 \ sources \ WebSites \ Pure \ PX.Objects \ CS \ Descriptor \ line08: атрибуты: 2808:. в 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, логические [] нисходящие, поиски Object [], параметры Object [], аргументы PXFilterRow [], аргументы DataSourceSelectArguments, логические и адаптеры closeWindowReowStartTowToRTRALTOWTTROTTALTORTTALTRENTEALTORTINGTREINT, Int32 ) в PX.Web.UI.PXBaseDataSource.ExecuteSelect (аргументы String viewName, DataSourceSelectArguments, PXDSSelectArguments pxarguments)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Убедитесь, что у вас есть представление PXSetup для вашей таблицы настроек в вашем графике, используя эту последовательность нумерации. На снимках экрана не видно ожидаемой последовательности нумерации, поскольку новый символ не соответствует ожидаемому символу. Это может быть отсутствие настройки из-за отсутствия представления PXSetup.

В посте Как реализовать автоматическое создание номера документа на пользовательском экране он ссылается на: «Убедитесь, что на графике построены документы, чтобы включить представление PXSetup в таблицу настроек.»

0 голосов
/ 07 ноября 2018

Вы можете попробовать обработать присвоение во время 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;
            }
        }
    }
...