Вот костяк, который работает:
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
FormStringControl formControl ;
QueryBuildDataSource qbdsVendInvoice ;
QueryBuildDataSource qbdsSalesTable ;
QueryBuildRange qbRange ;
Query query = new Query() ;
SysTableLookup sysTableLookup = SysTableLookup::newParameters( tableNum( CustInvoice4PaymJour_RU ), _formControl ) ;
;
// добавление полей в форму выпадающего списка
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, SalesId ) ) ;
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, InvoiceAccount ) ) ;
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, Invoice4PaymId ) ) ;
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, Invoice4PaymDate ) ) ;
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, Invoice4PaymAmount ) ) ;
sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, CurrencyCode ) ) ;
// TODO sysTableLookup.addLookupfield( fieldNum( CustInvoice4PaymJour_RU, Note_RU ) ) ;
qbdsVendInvoice = query.addDataSource( tableNum( CustInvoice4PaymJour_RU ) ) ;
/*
if( ledgerJournalTrans.AccountType == LedgerJournalACType::Cust && ledgerJournalTrans.AccountNum )
{
qbRange = qbdsVendInvoice.addRange( fieldnum( CustInvoice4PaymJour_RU, InvoiceAccount ) ) ;
qbRange.value( ledgerJournalTrans.AccountNum ) ;
}
// TODO qbRange = qbdsVendInvoice.addRange( fieldnum( CustInvoice4PaymJour_RU, isPaid ) ) ;
qbRange.value( SysQuery::value( NoYes::No ) ) ;
qbdsSalesTable = qbdsVendInvoice.addDataSource( tableNum( SalesTable ) ) ;
qbdsSalesTable.joinMode( JoinMode::InnerJoin ) ;
qbdsSalesTable.addLink( fieldNum( CustInvoice4PaymJour_RU, SalesId ), fieldNum( SalesTable, SalesId ) ) ;
qbRange = qbdsSalesTable.addRange( fieldNum( SalesTable, SalesStatus ) ) ;
qbRange.value( SysQuery::range( SalesStatus::None, SalesStatus::Delivered ) ) ;
*/
sysTableLookup.parmQuery( query ) ;
//formRunlookup = sysTableLookup.formRun();
//formControl = _formControl ;
sysTableLookup.performFormLookup();
//_formControl.performFormLookup( formRunLookup ) ;
}
+ путаница была CustInvoice4PaymJour_RU и VendInvoice4PaymJour_RU
(upd: второй пункт убрал)