22.03.2018, 23:58 | #1 |
MCTS
|
Самопроизвольное наложение 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). |
Теги |
ax4.0, query, queryrange, queryrun |
|
|