Показать сообщение отдельно
Старый 18.08.2014, 13:21   #23  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Всем доброго дня.
У меня подобная проблема.
Есть справочник учета холодильников, в нем указывается "дата установки" и "дата выбытия". Если холодильник еще не выбил, то "дата выбытия" пуская, т.е 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);
в инфологе вот такая вот ошибка "Ошибка расширенного диапазона запроса: Ожидается правая круглая скобка рядом с 32."
Дайте совет как правильно прописать условие.