|
Странный результат запроса |
☑ |
0
korchak
08.11.12
✎
16:08
|
Есть вот такой код
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ЧислоДней", ЧислоДней);
Запрос.УстановитьПараметр("РабочийДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
Запрос.УстановитьПараметр("ПредпраздничныйДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
Если ЧислоДней = 0 Тогда
ТекДата = ДатаНач;
Возврат ТекДата;
Иначе
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " + ЧислоДней + "
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря < &ДатаНач
| И (РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень
| ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень)
|УПОРЯДОЧИТЬ ПО
| ДатаКалендаря УБЫВ
|";
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
К примеру параметр ДатаНач = 08.11.12, а ЧислоДней = 2
Почему результат выборки получается 08.11.12 и 07.11.12? А не 07.11.12 и 06.11.12, когда четко условие стоит РегламентированныйПроизводственныйКалендарь.ДатаКалендаря < &ДатаНач
|
|
1
Aprobator
08.11.12
✎
16:11
|
имхается мне, что дата со временем не равным нулю в параметр попадает. Другого объяснения не вижу.
|
|
2
Лефмихалыч
08.11.12
✎
16:12
|
(0) ты уверен,что тебе не показалось?
|
|
3
korchak
08.11.12
✎
16:13
|
ДатаНач = 08.11.2012 23:59:59, это из табло...
|
|
4
zladenuw
08.11.12
✎
16:15
|
ну так .ДатаНач = 08.11.2012 11:59:59.
|
|
5
Aprobator
08.11.12
✎
16:15
|
(3) ну так, а я что сказал?
|
|
6
zladenuw
08.11.12
✎
16:15
|
(3) бери 00:00:00
|
|
7
ИльяА
08.11.12
✎
16:15
|
Запрос.УстановитьПараметр("ДатаНач",НачалоДня (ДатаНач));
|
|
8
korchak
08.11.12
✎
16:16
|
Нет, не показалось
Если Выборка.Количество() = ЧислоДней Тогда
Пока Выборка.Следующий() Цикл
ТекДата = Выборка.ДатаКалендаря;
КонецЦикла;
Возврат ТекДата;
КонецЕсли;
Выборка.ДатаКалендаря 08.11.2012 00:00:00 при первом цикле
Выборка.ДатаКалендаря 07.11.2012 00:00:00 при втором цикле
|
|
9
Undefined vs NULL
08.11.12
✎
16:16
|
(8) чукча не читатель (1) и (6)
|
|
10
korchak
08.11.12
✎
16:18
|
понял, пробую
|
|
11
Aprobator
08.11.12
✎
16:18
|
(8) у тебя в условие уходит значение 08.11.2012 23:59:59
08.11.2012 00:00:00 меньше этого значения. Так что все правильно попадает.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший