Я хотел бы иметь возможность создавать пользовательский фильтр для нового источника данных формы, который представляет собой пользовательское представление, которое я создал.
Я создал пользовательское представление ABCPurchLineBusUnitView (из пользовательского запросакоторый присоединяет таблицу PurchaseLine к представлению DefaultDimension) для добавления к источникам данных существующей формы (PurchaseLineOpenOrder).Столбец DisplayValue в основной сетке формы возвращает значение измерения бизнес-единицы для всех строк закупок.
Настройка формы: -
В методе init () нового источника данных, к которому я присоединился,просмотрите существующий источник данных PurchaseLine следующим образом:
public void init()
{
#DEFINE.DataSourceBusUnit(7)
QueryBuildDataSource qbds;
super();
qbds = this.query().dataSourceNo(#DataSourceBusUnit);
qbds.clearLinks();
qbds.joinMode(JoinMode::InnerJoin);
qbds.relations(true);
qbds.addLink(fieldNum(PurchLine,RecId),fieldNum(ABCPurchLineBusUnitView,RecId));
qbrBusinessUnit = qbds.addRange(fieldNum(ABCPurchLineBusUnitView, DisplayValue));
}
В методе executeQuery () того же источника данных я установил жестко закодированное значение диапазона, чтобы возвращать только те строки PurchaseLines, которые относятся к определенному бизнесу.Единица измерения.
public void executeQuery()
{
qbrBusinessUnit.value(queryValue('Business unit name here'));
super();
}
Отображаемый столбец работает нормально.Однако, используя CTRL + G для просмотра пользовательского фильтра, становится ясно, что значение фильтра отсутствует и не было применено.
В той же форме, когда я применяю фильтр к существующему источнику данных, он работает нормальноиспользуя описанную выше технику, которая вводит в заблуждение.
Кроме того, я хотел бы, чтобы это работало на внешнем источнике данных и попытался использовать QueryFilters, но не повезло и там, используя те же методы источника данных.