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). |
23.03.2018, 01:59 | #2 |
Участник
|
Смотрите на табличные индексы и это обычное поведение.
|
|
23.03.2018, 11:15 | #3 |
Участник
|
Мне другое интересно. Почему вы создаёте queryRun и строите цикл, когда можно просто на датасорсе метод вызвать:
X++: info(qbdsSalesTable.toString());
__________________
// no comments |
|
23.03.2018, 12:21 | #4 |
MCTS
|
Спасибо. Также было бы интересно:
1. Это поведение системы где-то описано в документации? 2. Отключить эту фичу как-то возможно для конкретного Query? Просто из отладки такая копипаста приехала когда упрощенный пример делал, результат эквивалентен. |
|
23.03.2018, 12:26 | #5 |
Участник
|
А вы не пробовали отключить св-во recordLevelSecurity?
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: alex55 (3). |
23.03.2018, 12:41 | #6 |
MCTS
|
Цитата:
Сообщение от SRF
А вы не пробовали отключить св-во recordLevelSecurity?
На SalesTable у нас RLS все равно не настроен. |
|
Теги |
ax4.0, query, queryrange, queryrun |
|
|