Как изменить отображаемое имя поля описания селектора

#acumatica

#acumatica

Вопрос:

У меня есть настройка, в которой я добавляю селектор в поле сетки, в котором есть поле описания следующим образом:

 [PXSelector(typeof(Search<EPEmployee.bAccountID,
                   Where<EPEmployee.status, Equal<SetupTypes.active>>>),
                   typeof(EPEmployee.acctCD),
                   typeof(EPEmployee.acctName),
                   SubstituteKey = typeof(EPEmployee.acctCD),
                   DescriptionField = typeof(EPEmployee.acctName))]
  

Моя проблема в том, что в поле есть поле описания (в данном случае «Имя сотрудника»), которое добавляется автоматически, но я не могу найти способ изменить отображаемое имя этого поля.

Поскольку у меня есть другое поле, которое использует тот же поиск сотрудника, оба они имеют одинаковое поле описания «Имя сотрудника», поэтому у меня нет способа узнать, какое описание соответствует какому полю селектора, если я не выберу значение и не увижу, что описание отображается в соответствующем поле «Имя сотрудника».

Есть ли способ изменить отображаемое имя этого поля описания? Я пробовал CacheAttached и событие RowSelected с атрибутом PXUIFieldAttribute.SetDisplayName, но, похоже, ничего не работает .. кажется, что ‘field_description’ — это автоматически добавляемое поле, которое нигде не существует в DAC, чтобы иметь возможность изменять отображаемое имя.

Ответ №1:

Согласно поддержке Acumatica, единственный способ, которым это можно сделать, заключается в следующем:

Единственный способ, который, по-видимому, работает, — это иметь два разных ЦАП, которые являются проекциями на ЦАП EPEmployee, и использовать каждый из них в отдельном атрибуте селектора.

Например:

 [PXProjection(typeof(EPEmployee))]
 public class EPEmployeeTest : IBqlTable
 {
    #region BAccountID
    ...
    #endregion
    #region AcctCD
    ...
    #endregion

    public abstract class acctName : PX.Data.BQL.BqlString.Field<acctName> { }
    [PXDBString(60, IsUnicode = true, BqlField=typeof(EPEmployee.acctName))]
    [PXUIField(DisplayName = "Employee Name New Label", Enabled = false, Visibility = PXUIVisibility.SelectorVisible)]
    public override string AcctName{get; set;}

 }