EDIT
Другая проблема заключалась в том, что вам не хватало атрибута базового типа в поле SelectAction. У вас был только PXStringList:
[PXStringList(new string[] { PrepareAndReleaseInvoice, PrintConsolidatedInvoice },
new string[] { "Prepare and Release Invoice", "Print Consolidated Invoice" })]
PXStringList не является базовым типом, поэтому вы должны добавить атрибут PXString, который является базовым типом:
[PXString(30, IsUnicode = true, InputMask = "")]
[PXStringList(new string[] { PrepareAndReleaseInvoice, PrintConsolidatedInvoice },
new string[] { "Prepare and Release Invoice", "Print Consolidated Invoice" })]
Вы можете использовать поле фильтра DAC (selectAction) в запросе BQL селектора для фильтрации данных селектора на основе поля фильтра:
[PXSelector(typeof(Search<SOOrder.orderNbr,
Where<Where2<Where<SOOrder.status, Equal<SOOrderStatus.open>, And<Current<SOImportFilter.selectAction>, Equal<SOImportFilter.createandConfirmShipment>>>,
Or<Where2<Where<SOOrder.status, Equal<SOOrderStatus.completed>>, And<Current<SOImportFilter.selectAction>, Equal<SOImportFilter.printInvoice>>>>>>>
В приведенном выше запросе BQL логика предложения where эквивалентна:
If (sales order status is open And select action is create and confirm shipment)
Or (sales order status is completed And select action is print invoice)
Вы можете настроить его по своим правилам.
Чтобы этот фильтр работал, вам нужно обработать поведение обновления с помощью свойств CommitChanges и AutoRefresh для элементов управления ASPX.
Вам необходимо установить значение CommitChanges, равное true, для отправки обратно изменений фильтра ЦАП на бизнес-уровень, как только пользователь изменит его:
// In a Grid
<px:PXGridColumn DataField="SelectAction" CommitChanges="True" />
// In a Form or in the RowTemplate of the Grid
<px:PXDropDown runat="server" ID="edSelectAction" DataField="SelectAction" CommitChanges="True" />
Для селектора «Заказ на продажу» необходимо, чтобы для параметра «Автообновление» было установлено значение «true», чтобы BQL-запрос селектора выполнялся каждый раз, когда пользователь открывает селектор вместо использования устаревших значений из кэша:
// In a Grid RowTemplate element
<px:PXGridLevel DataMember="YourDataView"
<RowTemplate>
<px:PXSelector runat="server" ID="edSalesOrderSelector" DataField="SalesOrderSelector" AutoRefresh="True" />
</RowTemplate>
<Columns>
<px:PXGridColumn DataField="SalesOrderSelector" CommitChanges="True" />
</Columns>
</px:PXGridLevel>
// In a Form
<px:PXSelector runat="server" ID="edSalesOrderSelector" DataField="SalesOrderSelector" AutoRefresh="True" />