Показать сообщение отдельно
Старый 30.11.2006, 10:04   #1  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Лукап, содержащий поля нескольких таблиц
Всем привет! Можно ли сформировать программно лукап (из метода поля датасорса формы), отображающий поля нескольких таблиц?

Использую класс 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();