Приветствую!
Обнаружил что на приложении 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