Показать сообщение отдельно
Старый 16.07.2025, 19:42   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В AX2012 появился метод getSQLStatement и директива generateonly

dax-lessons: Get underlying SQL query using getSQLStatement [Dynamics AX 2012]
Я раньше думал что для Query так невозможно. Оказывается возможно, но код должен исполняться на сервере (или возможно объект Query должен быть создан на сервере - я не проверял. Кому надо легко раскопает)

X++:
static void ViewSql_3(Args _args)
{
    SalesTable      salesTable;
    QueryBuildDataSource    qbds;
    Query           query;
    QueryRun        qr;
    ;

    query = new Query();
    query.literals(1);
    qbds = query.addDataSource(tableNum(SalesTable));
    qbds.addSelectionField(fieldNum(Common, RecId));
    qbds.addRange(fieldNum(SalesTable, SalesType)).value(queryValue(SalesType::Sales));
    qbds.addRange(fieldNum(SalesTable, RecId)).value(queryValue(123));
    qbds.addGroupByField(fieldNum(SalesTable, RecId));
    salesTable = null;
    
    qr = new QueryRun(query);
    info(strFmt("%1", DmfGenerateSSISPackage::getQueryValue(query.pack()))); // works
    info(strFmt("%1", qr.query().getSQLStatement())); // not works - need server tier
}
За это сообщение автора поблагодарили: Товарищ ♂uatr (4).