Показать сообщение отдельно
Старый 02.06.2011, 10:46   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,711 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
У класса 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 источников

Последний раз редактировалось Владимир Максимов; 02.06.2011 в 10:57.
За это сообщение автора поблагодарили: samolalex (1).