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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2008, 04:16   #1  
Blog bot is offline
Blog bot
Участник
 
24,920 / 825 (77) +++++++
Регистрация: 28.10.2006
Kashperuk Ivan: SysMultiTableLoookup - dynamic lookups based on multiple tables
Источник: http://kashperuk.blogspot.com/2008/0...c-lookups.html
==============

Wow! MSDN for Microsoft Dynamics AX is getting better every day. This is terrific news!! I still remember the days, when all the information was extremely hard to find. It had its own charm though :)
Anyway, this topic is really not about MSDN. It is about lookup forms.

First of all, for the record: I (and the Best Practices document as well) recommend creating custom lookup forms in AOT instead of dynamically coding them in the overridden lookup methods on controls/datasource fields.
But, in reality, this is true only for lookup forms with very large complexity. I won't go into a discussion of why that is the way it is here. :)

Now, back to what I was planning to write about:
In order to build a lookup form from code, developers use the SysTableLookup class.
You can go to MSDN (mentioned above) to read a How-to article on creating a run-time lookup form, as well as take a quick look at the SysTableLookup method descriptions.

SysTableLookup class has evolved over the multiple releases, providing more and more flexibility and control to the application developers.
I would like to publish another extension to this class, SysMultiTableLookup, which I hope will prove useful to members of the AX community.

Short list of features:
- Backward compatible, should cover everything that is present in AX 2009 version of SysTableLookup class
- Allows including multiple tables into lookups with different join types
- Completely based on the Query that you build, no extra parameters (except for the control) are needed to initialize the class
- Allows adding aggregated fields to the lookup
- Displays fields based on Boolean Enum as check boxes
- Allows to specify alternative labels when adding fields to the lookup

You can download the project from axaptapedia.com.
It has (to some extent) been tested on Axapta 3.0 SP3, AX 4.0 and AX 2009.

Also included in the project is a tutorial form, showing 4 examples of dynamic lookups using the new class. After importing the project, make sure to try out the form, and use it for future reference for code examples and other inspiration.

Источник: http://kashperuk.blogspot.com/2008/0...c-lookups.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 02.10.2008, 23:51   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2083 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Кто-нибудь посмотрел этот проект?
Очень бы хотелось получить какой-то Feedback по этому поводу.

Было бы полезно иметь эту функциональность вместо стандартного класса SysTablelookup?
За это сообщение автора поблагодарили: Lemming (3), TasmanianDevil (3).
Старый 02.10.2008, 23:56   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4475 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а можешь по-русски рассказать что там?
__________________
полезное на axForum, github, vk, coub.
Старый 03.10.2008, 00:14   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2083 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, если вкратце, то:

Класс, который позволяет создать лукап на основании query. То есть query - единственное, что необходимо передать для инициализации.

Поддерживает лукап основанный на более одной таблицы (в смысле, что можно сделать лукап с joinа двух или более таблиц, к примеру). При этом поддерживаются разные типы join-ов.

Поддерживает работу с лукапами, где нужна всего одна таблица (как обычный SysTableLookup)

Небольшие изменения по сравнению со стандартным классом:
- Поддерживает вывод агрегированных полей в лукапе (к примеру, лукап из 2 полей - код заказа и кол-во строк в заказе, т.д)
- Отображает поля/методы, основанный на типе boolean, как галочки, а не комбо-боксы
- Позволяет сразу указать метку для поля грида (вместо указания этого отдельно)

В проекте, на самом деле, есть форма tutorial_, которая показывает различные варианты применения класса.

Замечу, что я "пропагандирую" создание новых лукап форм в АОТ вместо динамического. Но, часто - это более простой/быстрый вариант...

Вот. Где-то так.
Хотелось бы, чтобы люди попробовали именно
За это сообщение автора поблагодарили: mazzy (2), belugin (3), oip (6).
Старый 03.10.2008, 10:42   #5  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,092 / 342 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Кто-нибудь посмотрел этот проект?
Очень бы хотелось получить какой-то Feedback по этому поводу.

Было бы полезно иметь эту функциональность вместо стандартного класса SysTablelookup?
Скачал, посмотрел пример, выглядит интересно! Кстати смотрел под DAX SP3, очень хорошо, что класс целых три версии поддерживает. Пока что практической необходимости воспользоваться им не возникало, но при случае обязательно попробую.
Старый 03.10.2008, 11:05   #6  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
872 / 377 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Поля из при-join'енных таблиц в lookup - это весьма и весьма хорошо.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 09.10.2008, 22:08   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2083 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вопрос к тем, кто все же попробовал:

Гипотетически, было ли бы полезным возможность возвращать значение(я) помимо(вместо) основного лукап значения?

Примеры:
- Поле с типом RecId, но при выборе отображаются нормальные поля (RecId не показывается), но при выборе подставляется в запись именно RecId
- При выборе записи вставляется выбранное значение (как обычно), но при этом заполняются и другие (возможно невидимые) поля этой записи, на основании записи, выбранной в лукапе? (Подобный пример, реализованный иначе, можно наблюдать в поле Контактное лицо, когда выбираем Имя, но при этом также заполняется код контактного лица)
- Ваш вариант
Старый 16.10.2008, 11:29   #8  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,565 / 1409 (52) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Записей в блоге: 1
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Гипотетически, было ли бы полезным возможность возвращать значение(я) помимо(вместо) основного лукап значения?
...
- При выборе записи вставляется выбранное значение (как обычно), но при этом заполняются и другие (возможно невидимые) поля этой записи, на основании записи, выбранной в лукапе?
Было бы.
__________________
С уважением,
Олег.
Старый 16.10.2008, 11:37   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2083 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Передумал - лучше использовать вот этот подход:
Опять про lookup
Старый 16.10.2008, 12:05   #10  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,565 / 1409 (52) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Записей в блоге: 1
Цитата:
ненавижу сопровождать такой код, лучше искать другие пути.
Я думаю, что если где-то решат использовать твой SysMultiTableLookup в реальном приложении (лично я пока не планирую его использовать, свою точку зрения я высказывал тут, я по возможности стараюсь не добавлять в приложение различные "программистские" навороты без острой необходимости. Хотя надо сказать, что SysMultiTableLookup - это гораздо меньшее зло, чем QueryBuilder. ), то такая возможность бы не помешала. И она бы была удобнее, чем различные финты ушами, типа того, что приведено по твоей ссылке.
__________________
С уважением,
Олег.
Старый 16.10.2008, 12:18   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2083 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нужно еще вот эту фразу процитировать:
Цитата:
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
Это делает решение, даже если я его впихнул бы, неполным - потому что, как не крутись, а сделать такое без открытия лукапа не получится.
Старый 16.10.2008, 12:26   #12  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,565 / 1409 (52) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Записей в блоге: 1
Я об этом помню. В таких случаях надо запрещать "вводить вручную, скопировать из буфера". Минусы такого решения тоже отлично понимаю.
__________________
С уважением,
Олег.
Теги
lookup, systablelookup, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Kashperuk Ivan: Creating and Posting Inventory ProfitLoss journals in DAX using .NET Business Connector Blog bot DAX Blogs 0 18.01.2008 04:26
Kashperuk Ivan: DEV_SysTableBrowser version 2.0 is out! Blog bot DAX Blogs 20 25.10.2007 21:03
Kashperuk Ivan: Buy MorphX IT in Russian Blog bot DAX Blogs 6 13.04.2007 17:48
Kashperuk Ivan: Dynamics AX TutorialsHello, everyone.I was goi... Blog bot DAX Blogs 17 22.02.2007 14:13
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.