15.02.2007, 15:12 | #1 |
Участник
|
lookup
Пробовал сделать небольшой тест, но lookup начел валиться....
Почему ума не приложу может кто подскажет AX3.0 SP05 FP01
__________________
Рабочий день сокращает жизнь на 8 часов Последний раз редактировалось Himan; 19.02.2007 в 15:35. |
|
15.02.2007, 15:43 | #2 |
Moderator
|
У поля справа источник не указан.
|
|
15.02.2007, 15:47 | #3 |
Участник
|
LedgerJournalTrans стоит
__________________
Рабочий день сокращает жизнь на 8 часов |
|
15.02.2007, 15:57 | #4 |
Moderator
|
|
|
15.02.2007, 16:00 | #5 |
Участник
|
Создай любое с типом Num, это не принципиально
__________________
Рабочий день сокращает жизнь на 8 часов |
|
15.02.2007, 16:24 | #6 |
Moderator
|
|
|
15.02.2007, 16:30 | #7 |
Участник
|
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( VendInvoice4PaymJour_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 ) ) ; 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 ) ; } 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 ; formControl.performFormLookup( formRunLookup ) ; }
__________________
Рабочий день сокращает жизнь на 8 часов |
|
15.02.2007, 16:50 | #8 |
Moderator
|
Вот костяк, который работает:
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 ) ; } (upd: второй пункт убрал) Последний раз редактировалось DreamCreator; 15.02.2007 в 17:02. |
|
|
За это сообщение автора поблагодарили: Himan (1). |
15.02.2007, 22:03 | #9 |
Программатор
|
|
|
16.02.2007, 09:43 | #10 |
Moderator
|
Я старался минимально менять выложенный код, поэтому formContol оставил, хотя он и не использовася (в последней версии).
Далее, lookup создается на поле датасоурса, т.е. если нажать на нем правой клавишей и выбрать - перекрыть метод lookup, то появится код: X++: public void lookup(FormControl _formControl, str _filterStr) { super(_formControl, _filterStr); } X++: SysTableLookup sysTableLookup = SysTableLookup::newParameters( tableNum( CustInvoice4PaymJour_RU ), _formControl ) ; Последний раз редактировалось DreamCreator; 16.02.2007 в 09:49. |
|