|
![]() |
#1 |
Участник
|
Сейчас код выглядит так.
X++: query = new Query(querystr(myQuery)); qbdsItt = query.datasourcetable(tableNum(InventTransferTable)); qbdsItt.addRange(fieldnum(InventTransferTable, ReceiveDate)).value(SysQuery::range(20\05\2017, toDay())); qbdsItt.addRange(fieldnum(InventTransferTable, TransferStatus)).value(SysQuery::value(InventTransferStatus::Received)); // может быть, лучше сразу задать в запросе в АОТ // нет так как это параметр который передается с формы, он может быть и не указан так же как и склад и диапазон дат qbdsItt.addRange(fieldnum(InventTransferTable, InventLocationIdFrom)).value('242'); qbdsIlTo = query.datasourcetable(tableNum(InventLocation),1); qbdsIlFrom = query.datasourcetable(tableNum(InventLocation),2); if (inventLocationType != InventLocationType::Standard) { qbrDataAreaId = qbdsIlTo.addRange(fieldNum(InventLocation, DataAreaId)); qbrDataAreaId.value(strFmt('((%1.%3 = %4) || (%2.%3 = %4))', qbdsIlTo.name(), qbdsIlFrom.name(), fieldStr(InventLocation, InventLocationType), any2int(inventLocationType))); } s = query.datasourceno(1).toString(); info(s); queryRun = new QueryRun(query); iRowCountTmp = SysQuery::countLoops(queryRun); SELECT * FROM InventTransferTable WHERE ((ReceiveDate>={ts '2017-05-20 00:00:00.000'} AND ReceiveDate<={ts '2017-06-19 00:00:00.000'})) AND ((TransferStatus = 2)) AND ((InventLocationIdFrom = N'242')) JOIN * FROM InventLocation WHERE InventTransferTable.InventLocationIdTo = InventLocation.InventLocationId AND ((((InventLocationTo.InventLocationType = 3) || (InventLocationFrom.InventLocationType = 3)))) JOIN * FROM InventLocation WHERE InventTransferTable.InventLocationIdFrom = InventLocation.InventLocationId |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#2 |
Участник
|
Цитата:
очень часто аксапта разбивает выполнение Query на несколько SQL-запросов. разбитие зависит от временных таблиц, кэшируемых таблиц, сложных запросов с невложенными связями, existJoin. https://msdn.microsoft.com/en-us/library/bb314836.aspx вполне вероятно, что аксапта разбила запрос на несколько. поэтому вам и советовали вытянуть в цепочку. сейчас предлагаю на этом не зацикливаться. проблема в том, что у вас две таблицы с одинаковым именем, нужно указать текстовое условие в скобках для обеих. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|