Версия системы 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
{}
Дополнение: нельзя сочетать оба синтаксиса написания имени поля. Если хотя бы в одном месте указано расширенное наименование, то и для всех остальных полей сортировки и группировки нужно поступать также.