Имя: Пароль:
1C
1С v8
Сравнение дат в запросе
0 Kanifor
 
21.11.11
13:46
Здравствуйте.

Есть запрос

ВЫБРАТЬ МИНИМУМ(РасписаниеЗанятий.ДатаНачала) КАК ДатаНачала
ИЗ
РегистрСведений.РасписаниеДисциплин КАК РасписаниеЗанятий
ГДЕ
РасписаниеЗанятий.ДатаОкончания >= &ТекДата

Параметр &ТекДата принимает результат функции ТекущаяДата()


И вот жешь беда, запрос возвращает пустую выборку. Если условие не накладывать, то результат возвращается. Даты окончания, которые больше текущей в базе есть.

Подскажите, в чем может быть ошибка?
1 Ursus maritimus
 
21.11.11
13:48
ВЫБРАТЬ МИНИМУМ(РасписаниеЗанятий.ДатаНачала) КАК ДатаНачала
ИЗ
РегистрСведений.РасписаниеДисциплин КАК РасписаниеЗанятий
ИМЕЮЩИЕ
МИНИМУМ(РасписаниеЗанятий.ДатаНачала) >= &ТекДата
2 LAAry
 
21.11.11
13:48
Формат дат.Одна с временем, другая без.
3 Wobland
 
21.11.11
13:49
(2) а без - это как?
4 LAAry
 
21.11.11
13:50
хз. Я как то пытался сравнивать в запросе ресурс типа дата состав дата с перодом регистра. Не вышло.
5 Жан Пердежон
 
21.11.11
13:51
(0) что запрос возвращает без условия?
6 szhukov
 
21.11.11
13:53
(0) РАЗНОСТЬДАТ() - Уже предлагали?
7 szhukov
 
21.11.11
13:54
+(6)

ВЫБРАТЬ МИНИМУМ(РасписаниеЗанятий.ДатаНачала) КАК ДатаНачала
ИЗ
РегистрСведений.РасписаниеДисциплин КАК РасписаниеЗанятий
ГДЕ
РАЗНОСТЬДАТ(&ТекДата, РасписаниеЗанятий.ДатаОкончания, ДЕНЬ) >=0
8 Wobland
 
21.11.11
13:55
(4) не поленился, сходил проверил. всё работает.
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ ВЫБОР КОГДА &ДатаСоВременем>&ДатабезВремени ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ";
   Запрос.УстановитьПараметр("ДатаСоВременем", ТекущаяДата());
   Запрос.УстановитьПараметр("ДатаБезВремени", ТекДата);
   Результат=Запрос.Выполнить().Выгрузить();
9 Kanifor
 
21.11.11
13:58
(1) Результат - пустая выборка

(2) ДатаНачала - ресурс, ДатаОкончания - измерение и оба в свойствах имеют Дата И Время

(5) Самую раннюю дату из списка дат

(7) Выдает ошибку - Неверные параметры РАЗНОСТЬДАТ

(8) Если же у меня не работает, то куда смотреть? Если поменять сравнение на меньше либо равно, то выдаются все даты, которые как больше, так и меньше
10 Kanifor
 
21.11.11
14:00
ДатаНачала - измерение, ДатаОкончания - ресурс
11 szhukov
 
21.11.11
14:00
(9) РАЗНОСТЬДАТ() - для того и придумана, что бы не париться со временем и т.п., а сравнивать только то что нужно: дни, месяца, года...

РазностьДат (DateDiff)
Функция предназначена для получения разницы между двумя датами. Параметры:
·      Выражение типа Дата;
·      Выражение типа Дата;
·      Тип разности – одно из:
Секунда;
Минута;
Час;
День;
Месяц;
Квартал;
Год.
Пример:
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34),
      ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06),
      «ДЕНЬ»)
Результат:
2
12 Wobland
 
21.11.11
14:01
ДатаОкончания - измерение? в параметры его
13 Жан Пердежон
 
21.11.11
14:03
(9) значит эта самая ранняя дата из списка меньше текущей даты
14 szhukov
 
21.11.11
14:04
(9) У вас там точно даты?
Скопируйте запрос из (7) и выполните, нет там ошибок в параметрах.
15 szhukov
 
21.11.11
14:05
+(14) как ТекДата устанавливаете - чему она равна?
16 Kanifor
 
21.11.11
15:58
(14) Точно даты. Я сам не понимаю из-за чего не срабатывает. Запрос, который я написал в (0) прислал мне разработчик конфигурации. Т.е. я подозреваю, что у него все работает, а если так, то как мне найти причину того, что у меня не срабатывает?
17 Ненавижу 1С
 
гуру
21.11.11
16:06
вывод - таких дат нет
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс