Я настраиваю экран «Выполнить выделения по проектам», чтобы добавить другое поле в раздел заголовка / фильтра и использовать его для фильтрации данных сетки. Мне удалось добавить поле PXString для «статуса», используя поле «Статус проекта» в качестве шаблона:
public class AllocationFilterExt : PXCacheExtension<AllocationFilter>
{
#region UsrStatus
[PXString(1, IsFixed = true)]
[ProjectStatus.List()]
[PXDefault(ProjectStatus.Active)]
[PXUIField(DisplayName = "Status", Required = true, Visibility = PXUIVisibility.SelectorVisible)]
public virtual string UsrStatus { get; set; }
public abstract class usrStatus : IBqlField { }
#endregion
}
Затем я добавляю это поле в определение представления «Элементы», расширяя BLC. следующим образом (показывая добавленную строку, отделенную от блока в середине):
public class AllocationProcessByProjectExt : PXGraphExtension<AllocationProcessByProject>
{
public PXCancel<AllocationFilter> Cancel;
public PXFilter<AllocationFilter> Filter;
public PXFilteredProcessingJoin<PMProject, AllocationFilter, LeftJoin<Customer, On<Customer.bAccountID, Equal<PMProject.customerID>>>,
Where2<Where<Current<AllocationFilter.allocationID>, IsNull, Or<PMProject.allocationID, Equal<Current<AllocationFilter.allocationID>>>>,
And2<Where<Current<AllocationFilter.projectID>, IsNull, Or<PMProject.contractID, Equal<Current<AllocationFilter.projectID>>>>,
And2<Where<Current<AllocationFilter.customerID>, IsNull, Or<PMProject.customerID, Equal<Current<AllocationFilter.customerID>>>>,
**And2<Where<Current<AllocationFilterExt.usrStatus>, IsNull, Or<PMProject.status, Equal<Current<AllocationFilterExt.usrStatus>>>>,**
And2<Where<Current<AllocationFilter.customerClassID>, IsNull, Or<Customer.customerClassID, Equal<Current<AllocationFilter.customerClassID>>>>,
And2<Where<Current<AllocationFilter.customerClassID>, IsNull, Or<Customer.customerClassID, Equal<Current<AllocationFilter.customerClassID>>>>,
And2<Match<Current<AccessInfo.userName>>,
And<PMProject.nonProject, Equal<False>,
And<PMProject.isTemplate, Equal<False>,
And<PMProject.baseType, Equal<PMProject.ProjectBaseType>>>>>>
>>>>>> Items;
Это прекрасно работает для фильтрации сетки, пока я не попытаюсь фактически обработать выбранные (проверенные) строки, после чего я получаюследующая ошибка. Я не могу понять, что его вызывает / чего не хватает:
Есть мысли о том, почему это может произойти? Нужно ли что-то добавлять в бизнес-логику для использования поля «Пользователь»?
Большое спасибо ...