![]() |
#21 |
Участник
|
Всем доброго дня.
У меня подобная проблема. Есть справочник учета холодильников, в нем указывается "дата установки" и "дата выбытия". Если холодильник еще не выбил, то "дата выбытия" пуская, т.е dateNull(). Пытаюсь в query наложить условие периода дат но безрезультатно. X++: queryLocal = new Query(); qbds1 = queryLocal.addDataSource(tableNum(SalesTable)); qbds1.addGroupByField(fieldNum(SalesTable, ShipmentPointCode)); qbds2 = qbds1.addDataSource(tableNum(RegistrationRefrigerationTable)); qbds2.joinMode(JoinMode::InnerJoin); qbds2.fetchMode(QueryFetchMode::One2One); qbds2.relations(false); qbds2.addLink(fieldNum(SalesTable, ShipmentPointCode), fieldNum(RegistrationRefrigerationTable, ShipmentPointCode)); queryRunLocal = new QueryRun(queryLocal); .... queryLocal = queryRunLocal.query(); qbds1 = queryLocal.dataSourceTable(tableNum(SalesTable)); qbds1.clearRange(fieldNum(SalesTable, ShippingDateRequested)); qbds1.addRange(fieldNum(SalesTable, ShippingDateRequested)).value(strfmt("%1 .. %2", startDate, endDate)); qbds2 = queryLocal.dataSourceTable(tableNum(RegistrationRefrigerationTable)); qbds2.clearRanges(); qbds2.addRange(fieldNum(RegistrationRefrigerationTable, DateInsert)).value(strfmt("..%1", endDate)); /* работает, выводит 2 строки*/ /*добавляю фильтр по дате выбытия, ожидаю в выводе 1 строку, а получаю много много*/ rangeDate = strfmt('((DateRemove>="%1") OR (DateRemove=="%2"))', startDate, dateNull()); // с этими строками qbds2.addRange(fieldNum(RegistrationRefrigerationTable, DateRemove)).value(rangeDate); // выводит чушь queryRunLocal = new QueryRun(queryLocal); Дайте совет как правильно прописать условие. |
|