Показать сообщение отдельно
Старый 23.09.2005, 11:01   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
PHP код:
void new()
{
    
Query                query = new Query();
    
QueryBuildDataSource qbds;

    ;

    
qbds query.addDataSource(tablenum(RTG_PR_ManagementClientTable));
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableCode), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableName), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableCreditMax), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableMaxPaymentDelay), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableMaxPaymentDays), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(RTG_PR_ManagementClientTableWorkInNewConditions), SelectionField::MIN);
    
qbds.orderMode(OrderMode::GROUPBY);
    
qbds.addSortField(fieldnum(RTG_PR_ManagementClientTableCode));
    
qbds qbds.addDataSource(tablenum(CustTable));
    
qbds.relations(false);
    
qbds.clearLinks();
    
qbds.addLink(fieldnum(RTG_PR_ManagementClientTableCode), fieldnum(CustTableRTG_PR_ManagementClientCode));
    
qbds.addSelectionField(fieldnum(CustTableAccountNum), SelectionField::MIN);
    
qbds.addSelectionField(fieldid2ext(fieldnum(CustTableDimension), 1), SelectionField::MIN);
    
qbds.addSelectionField(fieldnum(CustTableRTG_SalesManagerGroupId), SelectionField::MIN);
    
qbds.addRange(fieldnum(CustTableAccountNum));
    
qbds.addRange(fieldid2ext(fieldnum(CustTableDimension), 1));
    
// RTG, 22.09.2005, МВБ -->
    
qbds.orderMode(OrderMode::GROUPBY);
    
qbds.addSortField(fieldnum(CustTableRTG_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 и все тут.

Если бы это происходило у ВСЕХ пользователей, то было бы как-то понятно, что это где-то я ошибся. Но почему это происходит у некоторых?