Надо работать с классом
SysTableLookup и создавать запрос динамически.
Вот вам пример. В параметр _formControl передаётся элемент ввода, чтобы связать с ним форму выпадающего списка, т.е. лукап. добавляется 2 фильтра по полям
JournalType и
BlockUserGroupId. А поля
JournalName и
Name будут показаны в лукапе.
X++:
private void journalName_Lookup(FormControl _formControl)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(LedgerJournalName),_formControl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tablenum(LedgerJournalName));
QueryBuildRange queryBuildRangeJournalType = queryBuildDataSource.addRange(fieldnum(LedgerJournalName, JournalType));
QueryBuildRange queryBuildRangeUserGroupId = queryBuildDataSource.addRange(fieldnum(LedgerJournalName, BlockUserGroupId));
sysTableLookup.addLookupfield(fieldnum(LedgerJournalName, JournalName));
sysTableLookup.addLookupfield(fieldnum(LedgerJournalName, Name));
queryBuildRangeJournalType.value(queryValue(LedgerJournalType::Daily));
queryBuildRangeUserGroupId.value(UserGroupList::groupsForUser());
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}