Показать сообщение отдельно
Старый 28.07.2014, 14:53   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Полные предложения ORDER BY и GROUP BY
Версия системы AX2009. Примеров подобного кода в стандарте как-то ни разу не встречалось, как в прочем и задач, для которых это необходимо.

Пишу этот пост на случай вдруг ещё кто не знает. Неожиданно для себя обнаружил, что оказывается в X++ в предложения ORDER BY и GROUP BY можно включать поля не только текущего курсора но и присоединенных! Для этого достаточно указать имя соответствующего курсора перед именем поля.

Пример:

Такой обычный запрос отсортирует возвращаемые записи сначала по полям Field1 и field3 из таблицы Table1, а потом по полю Field2 из таблицы Table2.
X++:
while select Table1 order by Field1, field3
join Table2 order by Field2
{}
Если же последовательность полей в сортировке должна быть следующей Table1.Field1, Table2.Field2, Table1.Field3, то реализовать это можно так:
X++:
while select Table1 order by Table1.Field1, Table2.Field2, Table1.Field3
join Table2
{}
Дополнение: нельзя сочетать оба синтаксиса написания имени поля. Если хотя бы в одном месте указано расширенное наименование, то и для всех остальных полей сортировки и группировки нужно поступать также.
За это сообщение автора поблагодарили: mazzy (2), rusk (1), trud (1), Pustik (2), sukhanchik (2), Krash (1), MikeR (1), ice (1), IvanS (1), jeky (1), kornix (3), Ярослав Щекин (3).