Показать сообщение отдельно
Старый 22.03.2018, 23:58   #1  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Самопроизвольное наложение Order By в Query по SalesTable
Приветствую!

Обнаружил что на приложении AX4 при фильтрации SalesTable в Query по кастомному полю, добавленному на USR, самопроизвольно накладывается Order By по этому полю, при этом данный факт виден только при трассировке SQL, а если выводить текст запроса через DataSource.toString(), то никакой сортировки не видно. Если фильтровать по SalesId, например, то сортировки никакой нет. В данном случае на корректность результата не влияет, но хотелось бы понять откуда ноги растут. По полю есть неуникальный индекс, включающий dataareaId, вроде больше ничего особо примечательного.

Вопросы:
1. Нормально ли такое поведение системы и с чем оно может быть связано?
2. Возможно есть еще какие-то принципиальные моменты, которые в DataSource.toString() не видны? Вроде там обычно достаточно адекватное соответствие реальному запросу отображается.

Пример:
X++:
    SalesTable               st;
    QueryRun                queryRun;
    Query                       query;
    QueryBuildDataSource    qbdsSalesTable;
    ;

    query = new Query();

    qbdsSalesTable = query.addDataSource(tablenum(SalesTable));

    qbdsSalesTable.addRange(fieldnum(SalesTable, FIELD_NAME)).value(QueryValue('ЗНАЧЕНИЕ'));

    queryRun = new QueryRun(query);

    while (queryRun.next())
    {
        info(queryrun.query().dataSourceNo(1).toString());
    }
В инфологе:
SELECT * FROM SalesTable WHERE ((FIELD_NAME = N'ЗНАЧЕНИЕ'))

Трассировка SQL:
...
FROM SALESTABLE A WHERE ((DATAAREAID=?) AND (FIELD_NAME=?)) ORDER BY A.FIELD_NAME,A.DATAAREAID

Последний раз редактировалось alex55; 23.03.2018 в 00:13.
За это сообщение автора поблагодарили: S.Kuskov (2).