Всем привет! Можно ли сформировать программно лукап (из метода поля датасорса формы), отображающий поля нескольких таблиц?
Использую класс SysTableLookup.
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup;
Query query = new Query();
QueryBuildDataSource qbds, qbds1, qbds2;
;
qbds = query.addDataSource(tablenum(CustTable));
qbds.orderMode(orderMODE::GroupBy);
qbds.addSortField(fieldNum(CustTable, AccountNum));
qbds.addSortField(fieldNum(CustTable, Name));
qbds.addSortField(fieldNum(CustTable, RWStationId));
// Привязываем вторую таблицу к первой
qbds1 = qbds.addDataSource(tablenum(RContractTypes));
qbds1.orderMode( OrderMode::GroupBy );
qbds1.joinMode(joinMode::InnerJoin);
qbds1.addLink(fieldnum(CustTable, AccountNum), fieldnum(RContractTypes, RContractPartnerCode));
qbds1.addSortField(fieldnum(RContractTypes, RContractPartnerCode));
qbds1.addSortField(fieldnum(RContractTypes, RContractUserGroupId));
qbds1.addRange(fieldNum(RContractTypes, RContractUserGroupId)).value(RWParameters::find().RContractUserGroupId);
// Поля для вывода в лукап
sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formControl);
sysTableLookup.addLookupfield(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupfield(fieldNum(CustTable, Name));
sysTableLookup.addLookupfield(fieldNum(CustTable, RWStationId));
/*
Теперь нужно вывести в лукап поля из второй таблицы
Если делать так как ниже, то по всей видимости выводятся поля из первой таблицы с указанными идентификаторами. Понятно, что это не верно, так как вначале мы указали при инициализации класса CustTable. Можно ли как-то решить этот вопрос?
sysTableLookup.addLookupfield(fieldNum(RContractTypes, RContractPartnerCode));
sysTableLookup.addLookupfield(fieldNum(RContractTypes, RContractUserGroupId));
*/
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();