|
v7: Сравнение дат в условии | ☑ | ||
---|---|---|---|---|
0
iliapro
30.05.12
✎
11:35
|
Досталась в наследство база. При решении задач наткнулся на следующее условие :
Если ДатаДок<'01.01.2004' Тогда КонецЕсли; и был удивлен, что при ДатаДок равном 01.05.12 условие считается верным. Поскажите, что происходит при сравнении переменной типа Дата и значения '01.01.2004' ? |
|||
1
Злой Бобр
30.05.12
✎
11:39
|
(0)
Если ДатаДок<Дата(2004,1,1) Тогда КонецЕсли; |
|||
2
Ёпрст
30.05.12
✎
11:41
|
>>>и был удивлен, что при ДатаДок равном 01.05.12 условие считается верным.
брехня. Как ты это проверил ? |
|||
3
miki
30.05.12
✎
11:42
|
(2)Может у него столетие начинается в 1905...
|
|||
4
iliapro
30.05.12
✎
11:43
|
(1) Код,естественно, именно так и исправил, просто для себя интересно каким образом внутри 1С происходит сравнение ...
(2) В отладчике трассировкой попал внутрь условия |
|||
5
Ёпрст
30.05.12
✎
11:44
|
(3) ну, разве что так.
|
|||
6
iliapro
30.05.12
✎
11:44
|
(3) Столетие начинается в 1946 году
|
|||
7
Ёпрст
30.05.12
✎
11:45
|
(4) теперь выстави в Сервис-Параметры-число цифр в представлении года - 4 и посмотри, что за ДатаДок
поди 1912 ? |
|||
8
chief accountant
30.05.12
✎
11:48
|
(6) если будешь продолжать работать с представлением даты "2" грабли ещё где-нибудь вылезут рано или поздно
|
|||
9
iliapro
30.05.12
✎
11:51
|
(7) Да нет 2012. Но теперь условие не выполняется, забавно.
|
|||
10
Андрюха
30.05.12
✎
11:54
|
У меня корректно отрабатывает дата в апострофах и при 2 и при 4 знаках в году.
|
|||
11
1Сергей
30.05.12
✎
12:06
|
(10)+1
'01.01.04' = 01.01.04 '01.01.2004' = 01.01.04 |
|||
12
1Сергей
30.05.12
✎
12:08
|
?(Дата("01.05.12")<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = лжоте, батенька
|
|||
13
iliapro
30.05.12
✎
12:23
|
(12)Провел опыт :
а)Условия: Дата начала столетия : 1956 Количество ?(Дата(1912,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = "истоно, говорю вам" |
|||
14
iliapro
30.05.12
✎
12:24
|
(12)Провел опыт :
а)Условия: Дата начала столетия : 1956 Количество цифр в дате : 2 Получил : ?(Дата(1912,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = "истоно, говорю вам" б)Условия: Дата начала столетия : 1956 Количество цифр в дате : 4 Получил : ?(Дата(1912,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = "лжоте, батенька" |
|||
15
1Сергей
30.05.12
✎
12:24
|
(13) дык, ты года полностью указал, тут дата начала столетия вообще ни при чем
|
|||
16
Ёпрст
30.05.12
✎
12:25
|
(14) врешь ведь
|
|||
17
1Сергей
30.05.12
✎
12:26
|
(14) чудиса
|
|||
18
Ёпрст
30.05.12
✎
12:27
|
(17) нет там чудес - наглое враньё.
|
|||
19
iliapro
30.05.12
✎
12:35
|
(14)(17)
Да нет не вру ... Похоже что при количестве цифр в 2 преобразование в дату выражения '01.01.2004' = 01.01.2020, хотя попробовал в отладчике, получил при количестве цифр в дате 2 '01.01.2012' = '01.01.12' '01.01.12' = '01.01.12' |
|||
20
Ёпрст
30.05.12
✎
12:36
|
(19) конечно не врешь - нагло п..шь.
Открой для себя Табло в предприятии - скриншот в студию. |
|||
21
Ёпрст
30.05.12
✎
12:39
|
Если че, могу написать за тебя:
?(Дата(1912,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = истоно, говорю вам ?('01.05.1912'<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = истоно, говорю вам ?(Дата(12,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = истоно, говорю вам ?('01.05.12'<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = лжоте, батенька '01.05.12' = 01.05.2012 Дата(12,05,01) = 01.05.0012 Ну и соответственно ?(Дата(1912,05,01)<'01.01.2004', "истоно, говорю вам", "лжоте, батенька") = "лжоте, батенька" - наглое враньё |
|||
22
iliapro
30.05.12
✎
12:44
|
(21) Пока пытался сделать скриншот, Вы уже написали.
Да действительно в Табло на предприятии происходит именно так как вы написали, но в отладчике происходит именно то, что я привел в (14). |
|||
23
iliapro
30.05.12
✎
12:51
|
(21) Сейчас еще раз попытался в отладчике повторить, что получилось в (14) и ... действительно получается "лжоте, батенька", но ведь было же в первый раз, странно все это.
|
|||
24
Ёпрст
30.05.12
✎
12:53
|
(23) :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |