AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.02.2007, 15:12   #1  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
lookup
Пробовал сделать небольшой тест, но lookup начел валиться....
Почему ума не приложу может кто подскажет
AX3.0 SP05 FP01
__________________
Рабочий день сокращает жизнь на 8 часов

Последний раз редактировалось Himan; 19.02.2007 в 15:35.
Старый 15.02.2007, 15:43   #2  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
У поля справа источник не указан.
Старый 15.02.2007, 15:47   #3  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
LedgerJournalTrans стоит
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 15.02.2007, 15:57   #4  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Himan Посмотреть сообщение
LedgerJournalTrans стоит
У меня при импорте не отображется поле, возможно из-за того что его нет в LedgerJournalTrans, и возможно из-за того что оно у Вас не указано.

Если это поле есть в LedgerJournalTrans, то удобнее было бы разбираться с выгруженным EDT этого поля.
Старый 15.02.2007, 16:00   #5  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Создай любое с типом Num, это не принципиально
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 15.02.2007, 16:24   #6  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Himan Посмотреть сообщение
Создай любое с типом Num, это не принципиально
Создал в LedgerJournalTrans поле Field1 на базе Num - лукапа совершенно естественно нет, т.к. у Num не указан relation на поле базовой таблицы(т.к. Num сам базовый тип для многих ключевых полей)
Или что-то не так сделал?
Старый 15.02.2007, 16:30   #7  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
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  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Вот костяк, который работает:
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: второй пункт убрал)

Последний раз редактировалось DreamCreator; 15.02.2007 в 17:02.
За это сообщение автора поблагодарили: Himan (1).
Старый 15.02.2007, 22:03   #9  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Вот костяк, который работает:
Не понятно зачем нужны переменные _filterStr, _formControl и formControl.
Старый 16.02.2007, 09:43   #10  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Sada Посмотреть сообщение
Не понятно зачем нужны переменные _filterStr, _formControl и formControl.
Я старался минимально менять выложенный код, поэтому formContol оставил, хотя он и не использовася (в последней версии).

Далее, lookup создается на поле датасоурса, т.е. если нажать на нем правой клавишей и выбрать - перекрыть метод lookup, то появится код:
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
    super(_formControl, _filterStr);
}
Формальный параметр _formControl используется при создании объекта sysTableLookup:
X++:
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters( tableNum( CustInvoice4PaymJour_RU ), _formControl ) ;
Поправьте, если не так!

Последний раз редактировалось DreamCreator; 16.02.2007 в 09:49.
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gatesasbait: How to define a custom lookup form for an extended datatype Blog bot DAX Blogs 0 09.07.2008 22:05
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Нагло глючит lookup Sada DAX: Программирование 1 08.06.2006 10:32
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07
Произвольная Lookup форма Maxim Gorbunov DAX: База знаний и проекты 0 30.11.2001 21:59

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:34.