У класса SysTableLookup есть такой метод SysTableLookup.parmQuery() куда в качестве параметра можно передать предварительно сформированный Query, в том числе и по нескольким таблицам. Общая схема примерно такая
X++:
// Формируем Query
query = new Query()
queryBuildDataSource1 = query.addDataSource(tableNum(Table1))
queryBuildDataSource2 = queryBuildDataSource1.addDataSource(tableNum(Table2))
(...)
// Инициализируем класс для создания формы lookup
sysTableLookup = SysTableLookup::newParameters(tablenum(Table1), _lookupCtrl);
// Какие поля должны отображаться в выпадающем списке
sysTableLookup.addLookupfield(fieldnum(Table1, Field1));
sysTableLookup.addLookupfield(fieldnum(Table1, Field2));
// Передаем запрос в форму Lookup
sysTableLookup.parmQuery(query);
// Формируем форму Lookup
sysTableLookup.performFormLookup();
Пример можно посмотреть в методе формы Ax3.0
\Forms\PBATreeInsertDefaultRoute\Designs\Design\StringEdit:PBADefaultRouteId\Methods\lookup
Хотя, кажется, не получится вывести поля из разных таблиц. Впрочем, я не пробовал. Может и получится...
PS: Нет. Не получится. Формированием Grid в форме lookup занимается метод \Classes\SysTableLookup\buildGrid() в котором указывается Id только одной таблицы-источника. Значит, добавить объекты из нескольких таблиц-источников - не получится. Не будут сформированы корректные Id источников