У меня есть настройка на экран Release Time Activity (EP507020), где я добавляю поле пользователя.Это пользовательское поле будет содержать результат выборки статуса встречи из экрана «Встречи» (FS300200) на основе идентификатора встречи, который я также добавил в сетку экрана «Время отпуска».
Это было сделано для того, чтобыСетка процесса может быть отфильтрована для статуса назначения, которые имели определенное значение.Добавленное мной поле «Пользователь статуса встречи» содержит те же атрибуты, что и поле «Состояние» на экране «Встречи», с расширением «Кэш», которое выглядит следующим образом:
#region UsrApptStatus
public abstract class usrApptStatus : IBqlField
{
}
[PXDBString(1)]
[FSAppointment.status.ListAtrribute]
[PXUIField(DisplayName = "Appt Status",Enabled = false)]
public virtual string UsrApptStatus { get; set; }
#endregion
Это прекрасно работает, когда я получаю статус следующим образом.в расширении графика:
protected virtual void EPActivityApprove_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
var epactivityapprove = (EPActivityApprove)e.Row;
if (epactivityapprove != null)
{
FSxPMTimeActivity rowExt = epactivityapprove.GetExtension<FSxPMTimeActivity>();
if (rowExt != null)
{
var appointmentID = rowExt.AppointmentID;
var fsappt = (FSAppointment)PXSelect<FSAppointment,
Where<FSAppointment.appointmentID, Equal<Required<FSAppointment.appointmentID>>>>.Select(Base, appointmentID);
var epactivityapproveext = PXCache<EPActivityApprove>.GetExtension<EPActivityApproveExt>(epactivityapprove);
epactivityapproveext.UsrApptStatus = fsappt.Status;
}
}
}
Проблема в том, что когда я иду к фильтру столбца Status, независимо от того, что я выбираю из списка параметров, он очищает все строки.Я понятия не имею, почему это не сработает, но я уверен, что что-то упустил.
Сетка перед фильтрацией:
Фильтр:
Сетка после фильтра: