PHP код:
void new()
{
Query query = new Query();
QueryBuildDataSource qbds;
;
qbds = query.addDataSource(tablenum(RTG_PR_ManagementClientTable));
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, Code), SelectionField::MIN);
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, Name), SelectionField::MIN);
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, CreditMax), SelectionField::MIN);
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, MaxPaymentDelay), SelectionField::MIN);
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, MaxPaymentDays), SelectionField::MIN);
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTable, WorkInNewConditions), SelectionField::MIN);
qbds.orderMode(OrderMode::GROUPBY);
qbds.addSortField(fieldnum(RTG_PR_ManagementClientTable, Code));
qbds = qbds.addDataSource(tablenum(CustTable));
qbds.relations(false);
qbds.clearLinks();
qbds.addLink(fieldnum(RTG_PR_ManagementClientTable, Code), fieldnum(CustTable, RTG_PR_ManagementClientCode));
qbds.addSelectionField(fieldnum(CustTable, AccountNum), SelectionField::MIN);
qbds.addSelectionField(fieldid2ext(fieldnum(CustTable, Dimension), 1), SelectionField::MIN);
qbds.addSelectionField(fieldnum(CustTable, RTG_SalesManagerGroupId), SelectionField::MIN);
qbds.addRange(fieldnum(CustTable, AccountNum));
qbds.addRange(fieldid2ext(fieldnum(CustTable, Dimension), 1));
// RTG, 22.09.2005, МВБ -->
qbds.orderMode(OrderMode::GROUPBY);
qbds.addSortField(fieldnum(CustTable, RTG_PR_ManagementClientCode));
// RTG, 22.09.2005, МВБ <--
queryRun = new QueryRun(query);
}
То, что выделено комментарием - это та самая "заплатка".
RTG_PR_ManagementClientTable - это таблица созданная уже в нашей копии AXAPTA. Не стандартный функционал.
MIN(code) - это просто перестраховка. На результат не должно влиять никак. Пробовал убирать MIN() - никаких изменений.
Я сам заходил под лигином пользователя и эффект был тот же. Т.е. даже не надо менять RANGE. Достаточно просто открыть SysQueryForm и ничего не меняя тут же нажать "Ok". Все. Group By - вылетает.
Получается, какие-то проблемы именно с SysQueryForm под логином некоторых пользователей.
Я уже делал инкрементную компиляцию RunBase и самой формы SysQueryForm - не помогает.
Проверяю, что же получилось в результате в метод main()
PHP код:
...
if myClass.prompt()
{
myClass.test_query()
//myClass.run()
}
void test_Query()
{
;
info(queryRun.query().DataSourceNo(1).toString());
}
Кроме того, проверял SQL профайлером, что реально получает сервер. Нет там GROUP BY и все тут.
Если бы это происходило у ВСЕХ пользователей, то было бы как-то понятно, что это где-то я ошибся. Но почему это происходит у
некоторых?