![]() |
#10 |
Axapta Retail User
|
Можно включать трассировку запросов с сохранением в таблицу на время выполнения запроса, т.е. перед выполнением запроса включить, а после выполнения отключить. А потом попытаться найти в SysTraceTableSQL соответствующую запись с текстом запроса на T-SQL.
Однако для этого случая нужно хотя бы один раз выполнить запрос. И не всегда точно удастся идентифицировать твою запись в таблице SysTraceTableSQL. X++: static void Job60(Args _args) { UserInfo userInfo; Query Query; QueryRun QueryRun; QueryBuildDatasource qbds; SysTraceTableSQL sysTraceTableSQL; SysTraceTableSQLTabRef sysTraceTableSQLTabRef; void setTrace(boolean _set) { ; ttsbegin; userInfo.selectForUpdate(true); userInfo.reread(); if (userInfo) { if (_set) { if (!((UserInfo.DebugInfo & (1 << 8)) >> 8)) { userInfo.debugInfo = userInfo.DebugInfo | (1 << 8); } if (!((UserInfo.TraceInfo & (1 << 3)) >> 3)) { userInfo.TraceInfo = userInfo.TraceInfo | (1 << 3); } } else { if ((UserInfo.TraceInfo & (1 << 3)) >> 3) { userInfo.TraceInfo = userInfo.TraceInfo ^ (1 << 3); } if ((UserInfo.DebugInfo & (1 << 8)) >> 8) { userInfo.debugInfo = userInfo.DebugInfo ^ (1 << 8); } } userInfo.update(); } ttscommit; infolog.getUserSetup().setUserSetup(userinfo); } ; Query = new Query(); qbds = Query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value("123, 124"); qbds = qbds.addDataSource(tableNum(InventTableModule)); qbds.addRange(fieldNum(InventTableModule, ModuleType)).value(queryValue(ModuleInventPurchSales::Invent)); qbds.addLink(fieldNum(InventTable, ItemId), fieldNum(InventTableModule, ItemId)); qbds.joinMode(JoinMode::ExistsJoin); QueryRun = new QueryRun(Query); select firstonly userInfo where userInfo.Id == curuserid(); setTrace(true); QueryRun.next(); // выполнение запроса setTrace(false); select firstonly systracetablesql order by CreatedDateTime desc where systracetablesql.createdBy == curuserid() &&systracetablesql.createdDateTime >= DateTimeUtil::newDateTime(systemdateget(),0) &&systracetablesql.createdDateTime <= DateTimeUtil::newDateTime(systemdateget(),str2time('23:59:59')) exists join sysTraceTableSQLTabRef where sysTraceTableSQLTabRef.TraceRecId == systracetablesql.RecId &&(sysTraceTableSQLTabRef.TraceTabId == tablenum(InventTable) || sysTraceTableSQLTabRef.TraceTabId == tablenum(InventTableModule)); info(systracetablesql.Statement); } Может быть будет еще вот эта тема полезна Как убрать знаки вопроса в мониторе запросов SQL?. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|