Acumatica - уникальный идентификатор PXDBScalar несовместим с int - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь заполнить это поле значением атрибута customer.

  public class CustomerExt : PXCacheExtension<Customer>
  {
    #region OtherID
    [PXString]
    [PXUIField(DisplayName = "Other ID")]
    [PXDBScalar(typeof(Search<CSAnswers.value,
        Where<CSAnswers.refNoteID, Equal<Current<Customer.noteID>>,
            And<CSAnswers.attributeID, Like<OtherIDAttr>>>>))]
    public virtual string UsrOtherID { get; set; }
    public abstract class usrOtherID : IBqlField { }
    #endregion 

    public class OtherIDAttr: Constant<string>
    {
        public OtherIDAttr() : base("OTHERID") { }
    }
}

Вызывает вышеуказанную ошибку при добавлении поля на экран.Если я удаляю второе условие из поиска <>, поле заполняется, поэтому я уверен, что это сравнение между CSAnswers AttributeID и константной строкой.

Если кто-то может указать мне правильное направление, этобыло бы здорово.

1 Ответ

0 голосов
/ 01 июня 2018

Похоже, вы получаете эту ошибку из-за оператора Current (Equal<Current<Customer.noteID>>), используемого в PXDBScalarAttribute .

Попытка просто удалить CurrentОператор привел к другой ошибке Неверное имя столбца 'NoteID'. , которое можно устранить, заменив Customer.noteID на PX.Objects.CR.BAccount.noteID:

public class CustomerExt : PXCacheExtension<Customer>
{
    #region OtherID
    public abstract class usrOtherID : IBqlField { }

    [PXString]
    [PXUIField(DisplayName = "Other ID")]
    [PXDBScalar(typeof(Search<CSAnswers.value,
        Where<CSAnswers.refNoteID, Equal<BAccount.noteID>,
            And<CSAnswers.attributeID, Like<OtherIDAttr>>>>))]
    public virtual string UsrOtherID { get; set; }
    #endregion

    public class OtherIDAttr : Constant<string>
    {
        public OtherIDAttr() : base("OTHERID") { }
    }
}
...