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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.10.2016, 21:22   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Альтернативный вариант - немного поменять взгляд на задачу. Вместо того, чтобы возвращать записи, упаковкнные в какой-то контейнер, можно возвращать сформированный запрос. Например, в виде объекта Query или QueryRun. Если возвращаемая таблица во всех вариантах запроса одна, то можно инициализировать табличный курсор с помощью select noFetch и вернуть его.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: mazzy (2), NetBus (2).
Старый 13.10.2016, 21:36   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Вместо того, чтобы возвращать записи, упаковкнные в какой-то контейнер, можно возвращать сформированный запрос.
Посмотрите для примера на класс TradeLoopTrans. Пример его использования - метод CustInvoiceJour.queryCustInvoiceTrans и отчёт SalesInvoice метод fetch. Если я правильно понял вашу задачу, то в стандартных отчётах-документах по заказу/закупке реализовано нечто похожее.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.10.2016, 21:45   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Альтернативный вариант - немного поменять взгляд на задачу. Вместо того, чтобы возвращать записи, упаковкнные в какой-то контейнер, можно возвращать сформированный запрос. Например, в виде объекта Query или QueryRun. Если возвращаемая таблица во всех вариантах запроса одна, то можно инициализировать табличный курсор с помощью select noFetch и вернуть его.
Это если логика отбора покрывается возможностями Query
За это сообщение автора поблагодарили: mazzy (2).
Старый 13.10.2016, 22:00   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Это если логика отбора покрывается возможностями Query
Вопрос исключительно для моего общего развития: а чего такого не умеет Query?

Ну и для полноты картины замечу, что если уж вам хочется ещё больше гибкости, то можно сделать наследника класса SysSearchBase, всю логику отбора записей упаковать в него, и возвращать его вместо Query. Код, использующий этот класс, будет только дёргать метод next(). Хотите примеров - смотрите класс BOMSearch и то, как он используется в BOMCopyFromBOM.copy().
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: S.Kuskov (5).
Старый 13.10.2016, 22:12   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Вопрос исключительно для моего общего развития: а чего такого не умеет Query?
Много чего..., case when, например.
Старый 13.10.2016, 22:50   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Много чего..., case when, например.
Понятно. Я думал, while select что-то такое умеет, чего не умеет Query, но while select тоже не умеет case when.

В AX2012 эта проблема решена с помощью computed columns, которые можно добавлять к View (например, см. View VendTableCube). В AX2009 с этим сложнее, но часто можно обойти с помощью обычных display-методов на таблицах.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.10.2016, 22:55   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
В AX2009 с этим сложнее, но часто можно обойти с помощью обычных display-методов на таблицах.
ты ведь точно не забываешь о группировках?
ты ведь точно говоришь не только о переборе на уровне записей?
Старый 13.10.2016, 22:59   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от mazzy Посмотреть сообщение
ты ведь точно не забываешь о группировках?
ты ведь точно говоришь не только о переборе на уровне записей?
Точно не забываю
На View тоже можно создавать display-методы
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: mazzy (2).
Старый 14.10.2016, 01:43   #9  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Много чего..., case when, например.
Мне всегда DISTINCT во всей AX страшно не хватало: "найди самое последнее по времени Y с типом X, и выведи один раз для каждого X".
Решал, кстати, двумя view, в одном из которых был GROUP BY(X) и MAX(Y) того, что хотелось иметь первым, а второй view был построен на query inner join с первым view.

Последний раз редактировалось EVGL; 14.10.2016 в 01:51.
За это сообщение автора поблагодарили: mazzy (2), trud (2), sukhanchik (2).
Теги
distinct, recordrefrencelist_ru, recordsortedlist, view

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное воссоздание записей SqlDictionary для определенной таблицы gl00mie DAX: Программирование 17 04.05.2023 20:13
Выборка произвольных записей одним запросом db DAX: Программирование 1 23.09.2010 14:15
Выбор записей по неизвестным заранее полям PavelSR DAX: Программирование 16 21.08.2006 16:16
Как добавить в фильтрацию записей доп. таблицы n:1 или 1:n? Hidden DAX: Программирование 6 11.08.2006 14:04
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27

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

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

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