Показать сообщение отдельно
Старый 10.03.2016, 14:56   #7  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
В поддержку моей теории попробуйте выполнить следующий джоб.
Видно, что если таблица CustTrans непоследняя, и к ней приджойнить другие таблицы, то Аксапта генерирует неправильный запрос.
X++:
static void Job782(Args _args)
{
    Query                   query = new Query();
    QueryRun                queryRun;
    QueryBuildDatasource    qbdsCustTable;
    QueryBuildDatasource    qbdsCustTrans;
    QueryBuildDatasource    qbdsCustTransOpen;
    QueryBuildDatasource    qbdsLedgerTrans;
    QueryBuildDatasource    qbdsLedgerTable;

    ;
    //-->правильно работает
    query = new Query();
    qbdsCustTable = query.addDataSource(tableNum(CustTable));
    qbdsCustTransOpen = qbdsCustTable.addDataSource(tableNum(CustTransOpen));
    qbdsCustTrans = qbdsCustTransOpen.addDataSource(tableNum(CustTrans));
    qbdsLedgerTrans = qbdsCustTrans.addDataSource(tableNum(LedgerTrans));
    qbdsLedgerTable = qbdsLedgerTrans.addDataSource(tableNum(LedgerTable));

    queryRun = new QueryRun(query);
    info(queryRun.query().dataSourceNo(1).toString());
    //<--правильно работает
    
    
    //-->неправильно работает
    query = new Query();
    qbdsCustTable = query.addDataSource(tableNum(CustTable));
    qbdsCustTrans = qbdsCustTable.addDataSource(tableNum(CustTrans));
    qbdsCustTransOpen = qbdsCustTrans.addDataSource(tableNum(CustTransOpen));
    qbdsLedgerTrans = qbdsCustTrans.addDataSource(tableNum(LedgerTrans));
    qbdsLedgerTable = qbdsLedgerTrans.addDataSource(tableNum(LedgerTable));

    queryRun = new QueryRun(query);
    info(queryRun.query().dataSourceNo(1).toString());
    //<--неправильно работает
}

Последний раз редактировалось Ace of Database; 10.03.2016 в 15:04.
За это сообщение автора поблагодарили: mazzy (2), Ruff (2).