Ошибка: Произошла ошибка при обработке поля Номер счета: Ошибка: «Номер счета» не найден в системе - PullRequest
0 голосов
/ 20 сентября 2019

Поле, в котором необходимо сохранить идентификатор записи, имеет проблему с разрешением автонумерации.

ЦАП настроен на использование автонумерации.Однако при поиске записи или создании новой записи появляется сообщение «Элемент AcctCD не найден (ограничено: False, external: True, value:)» ошибка

DAC:


    [SerializableAttribute()]
    [PXPrimaryGraph(typeof(LoanMaint))]
    [PXCacheName("OLAccount")]
    public class OLAccount : IBqlTable
    {   
 [PXDBString(30, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
        [PXDefault()]
        [PXUIField(DisplayName = "Loan Number", Visibility = PXUIVisibility.SelectorVisible, TabOrder = 1)]
        [PXSelector(typeof(Search<OLAccount.acctCD>))]
         [LoanAccount.RefNbr(typeof(Search2<OLAccount.acctCD, 
                                      InnerJoin<BAccountR, On<OLAccount.parentBAccountID, Equal<BAccountR.bAccountID>>>>), 
                                      Filterable = true, IsPrimaryViewCompatible = true)]       
        [LoanAccount.Numbering()]
        public virtual string AcctCD { get; set; }
        public abstract class acctCD : PX.Data.BQL.BqlString.Field<acctCD> { }
}

public class LoanAccount
    {
        /// <summary>
        /// Specialized selector for OLAccount AcctCD.<br/>
        /// By default, defines the following set of columns for the selector:<br/>
        /// OLAccount.acctCD, OLAccount.acctName, OLAccount.externalAccountRef, <br/>
        /// OLAccount.externalReference, OLAccount.parentBAccountID<br/>
        /// </summary>
        public class RefNbrAttribute : PXSelectorAttribute
        {
            public RefNbrAttribute(Type SearchType)
                : base(SearchType,
                typeof(OLAccount.acctCD),
                typeof(OLAccount.acctName),
                typeof(OLAccount.externalAccountRef),
                typeof(OLAccount.parentBAccountID),
                typeof(BAccountR.acctCD),
                typeof(BAccountR.acctName),
                typeof(BAccountR.type),
                typeof(BAccountR.classID))
            {
            }
        }

        public class NumberingAttribute : AutoNumberAttribute
        {
            public NumberingAttribute()
                : base(typeof(OLSetup.accountNumberingID), typeof(AccessInfo.businessDate)) { }

        }
    }

График:

public class LoanMaint : PXGraph<LoanMaint, OLAccount>
    {
        public PXSelect<OLAccount> LoanAccount;
        public PXSelect<OLAccount, Where<OLAccount.acctCD, Equal<Current<OLAccount.acctCD>>>> CurrentLoanAccount;

        public PXSetup<Company> Company;
        public PXSetup<OLSetup> OLSetup;

        public LoanMaint()
        {
            OLSetup setup = OLSetup.Current;
        }
    }

1 Ответ

0 голосов
/ 21 сентября 2019

Я повторил это без получения каких-либо ошибок.

Попробуйте это:

  • В определении DAC удалите атрибут PXSelector (селектор уже добавляется LoanAccount.RefNbr () )
  • Несоответствие между длиной поля (30 символов) и количеством символов в маске (только 15 "C "были добавлены).Измените длину поля на 15 (большинство из нумерованных полей Acumatica поддерживают до 15 символов)

Если эти изменения по-прежнему выдают ошибку.Для устранения неполадок упростите код с помощью:

a.Используйте последовательность нумерации Acumatica: т.е. APSetup.batchNumberingID вместо OLSetup.accountNumberingID

b.Упростите запрос RefNbr (), чтобы использовать одну таблицу (или измените ее на LeftJoin <> вместо InnerJoin <>)

...