![]() |
#1 |
Участник
|
lookup form странное поведение
Добрый день, установлена Axapta 3 SP6.
Переопределяю на любой форме метод lookup у поля на: X++: public void lookup() { Query query = new query(); QueryBuildDataSource queryBuildDataSource; QueryBuildRange queryBuildRange; SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(EmplTable), this); ; sysTableLookup.addLookupfield(fieldNum(EmplTable, Name)); sysTableLookup.addLookupfield(fieldNum(EmplTable, EmplId), true); queryBuildDataSource = query.addDataSource(tableNum(EmplTable)); //queryBuildDataSource.addSortIndex(indexNum(EmplTable, NameIdx)); queryBuildDataSource.addSortField(fieldNum(EmplTable, Name), SortOrder::Ascending); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } Вот форма для примера изменения водителя в заказах: Form1_test.xpo Кто-нибудь может подсказать что не так сделано? А то вообще никаких мылей ![]() |
|
![]() |
#3 |
Administrator
|
Явление - на мой взгляд совершенно обычное. Вы попробуйте перейти к основной таблице к клиентам (сотрудникам и т.д.), а затем отсортируйтесь по другому полю. У Вас конечно сортировка получится... но позиционирование пропадет.
Тут (если смотреть код класса SysTableLookup) происходит такая же ситуация - сначала передается в лукапную форму args.lookupValue (т.е. происходит эмуляция перехода к основной таблице), а затем накладывается query (в Вашем случае - сортировка). Склонен считать сие проявление особенностью системы, когда пытаются изменить ее поведение на ей несвойственное. Т.е. несвойственно для системы сортироваться в простом лукапе по полю, которое не попадает в основное поле (да и вообще сортироваться в принципе). Один из способов "обхода" сего факта - является убирание "эмуляции перехода к основной таблице" (как было указано по ссылке выше). Но в этом случае Вы лишаетесь позиционирования курсора в лукапе на выбранное значение.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 28.10.2009 в 14:00. |
|
![]() |
#4 |
Участник
|
DSPIC Спасибо за ссылку, заработало.
sukhanchik Спасибо за информацию, но потеря курсора не страшна, т.к. её итак не было, даже при двух одинаковых значениях могли вывалиться абсолютно разные списки, очень редко курсор был именно на нужной записи (случайно). А так... Да, подход кривоват, но почему-то не тянет делать по-другому только из-за позиционирования, погода что-ли влияет... Время будет - возможно и сделаю всё по-другому. Всем спасибо. |
|