Имя: Пароль:
1C
1С v8
Разница двух пустых дат
,
0 Роспатнюк Сергей Сер
 
15.08.19
10:10
Наткнулся на то что если к Дата(00.00.0000 00:00:00) + 1 = 30.11.0002 00:00:01, а если к Дата(01.01.0001 00:00:00) + 1 = 01.01.0001 00:00:01, подскажите в чем отличие этих двух на вид пустых дат ?
1 mikecool
 
15.08.19
10:11
первая дата не пустая
2 palsergeich
 
15.08.19
10:11
01.01.0001 00:00:01, с точки зрения 1с это не пустая дата.
А первая секунда 1 года
3 palsergeich
 
15.08.19
10:13
(2) Дата(00.00.0000 00:00:00) и да это тоже не пустая дата с точки зрения 1с доки
4 palsergeich
 
15.08.19
10:13
(3) пустая дата это Дата (1,1,1,0,0,0)
5 palsergeich
 
15.08.19
10:14
Дай угадаю - ты читаешь xml
6 Роспатнюк Сергей Сер
 
15.08.19
10:15
(5) не не угадал
7 Роспатнюк Сергей Сер
 
15.08.19
10:16
просто встретил такую конструкцию и она мне выдала такое значение в пофигураторе стало интерестно
8 Роспатнюк Сергей Сер
 
15.08.19
10:17
(3) Дата(00.00.0000 00:00:00) но почему когда к такой дате прибавляешь секунду получается 11 месяц второго года ?
9 palsergeich
 
15.08.19
10:19
(8) потому что грабли.
Исходя из стандарта датавремя xml пустая дата 00010101 и исходя из этого писался остальной код.
А запись в виде 0000000 что то сломала
10 НЕА123
 
15.08.19
10:20
Дата("00.00.0000 00:00:00")=30.11.0002  0:00:00
11 palsergeich
 
15.08.19
10:21
(9) можно написать на партнерку, по идее должно быть исключение невозможности преобразования типа
12 Роспатнюк Сергей Сер
 
15.08.19
10:22
(11) что странно пытаюсь сейчас так посмотреть выдает эту ошибку но 15 мин назад преобразовывало без проблем )))
13 Роспатнюк Сергей Сер
 
15.08.19
10:24
(12) ой не реально Дата("00.00.0000 00:00:00")=30.11.0002  0:00:00, кавычку пропустил ))
14 vova1122
 
15.08.19
10:24
(8) если считать правильно то даты ("00.00.0000 00:00:00") в природе не существует, вот и 1с преобразовывает с "потолка"
15 Волшебник
 
15.08.19
10:26
Кстати, настоящая пустая дата вот: '00010101' (в апострофах пишется литерал даты)

И дата '00010101'+0.001 тоже не совсем пустая дата, хотя выглядит как пустая, потому что если вычесть из неё пустую дату ('00010101'+0.001 - '00010101'), то получим 0.001.
Я об этом говорил Нуралиеву, он сам был слегка обескуражен.
16 НЕА123
 
15.08.19
10:26
(11)
недокументированная возможность.
17 Роспатнюк Сергей Сер
 
15.08.19
10:26
(14) ну почему бы не преобразовывать в 01.01.0001.00:00:01 а не в 30.11.0002  0:00:00 почему именно эта дат 0_0
18 sitex
 
naïve
15.08.19
10:28
(15) Тогда что в остатки 0.001 ?  Что это дата ? Число ? Рудимент даты?
19 vova1122
 
15.08.19
10:28
(17) Нуралиев не предусмотрел этот вариант...
20 Волшебник
 
15.08.19
10:32
(18) Вероятно, в нутрях 1С даты хранятся в виде дробного числа с точностью до тысячной.
21 Роспатнюк Сергей Сер
 
15.08.19
10:33
(20) тогда уже до десятитысячной так как 0.0001 он тоже жрет
22 Волшебник
 
15.08.19
10:39
(21) согласен
23 ptiz
 
15.08.19
10:42
Очень не хватает возможности хранить тысячные доли в дате документов, чтобы в одну секунду запихнуть несколько документов в нужной последовательности :(
24 Роспатнюк Сергей Сер
 
15.08.19
10:43
(22) наверн на всякий случай для возможности создания 1С Ядерные реакции
25 Волшебник
 
15.08.19
10:44
(24) Думаю, всё гораздо проще. Надо же как-то упорядочивать документы в пределах одной секунды. Есть такое понятие МоментВремени, это дата+документ. Скорее всего именно там используются дробные доли секунды.
26 Роспатнюк Сергей Сер
 
15.08.19
10:48
(25) может еще отладчик с его точностю замеров времени выполнения кода юзает эту фичю
27 vova1122
 
15.08.19
10:48
(25) Но  ДатаДок1-ДатаДок2  этого не покажет?
28 Волшебник
 
15.08.19
10:50
Вопросы, загадки... Такого не расскажут на РенТВ...
29 Роспатнюк Сергей Сер
 
15.08.19
11:07
Закрываем, загадки будем в другом месте решать)
30 unregistered
 
15.08.19
11:50
(23) >> не хватает возможности хранить тысячные доли в дате документов, чтобы в одну секунду запихнуть несколько документов в нужной последовательности.

В чем смысл ограничения в тысячных? Почему не миллионные, миллиардные, или ещё более мелкие дробные? Или просто - закладка на будущие грабли, чтобы пораньше столкнуться с заложенным ограничением?
31 Роспатнюк Сергей Сер
 
15.08.19
12:07
(30) замер производительности выдает время с точностью до 6 знаков после запятой не факт что ограничение есть в нутрях, а вот в пофигураторе вполне может быть.
32 vova1122
 
15.08.19
12:28
(31) Проверил. ДатаПлюс=ПровДата+0.123456;
Сообщить(ДатаПлюс-ПровДата);

плучается разница=0,1235 (система округляет до 4 знаков)
33 dezss
 
15.08.19
12:48
Пасхалка от 1с.
34 dezss
 
15.08.19
12:56
(33) 30 ноября
Международный день защиты информации
35 Вафель
 
15.08.19
13:29
36 dezss
 
15.08.19
14:13
37 1Сергей
 
15.08.19
14:28
(35) (36) платформы назовите
38 Lama12
 
15.08.19
14:29
(37) Сейчас окажется что SAP и Axapta
39 НадюшаЯ
 
15.08.19
14:57
40 Роспатнюк Сергей Сер
 
15.08.19
15:08
(37) 8.3.13.1513
41 dezss
 
15.08.19
15:49
(37) 8.3.8.2088
42 sitex
 
naïve
15.08.19
15:57
(37) На 8.3.14.1630 то же "30.11.0002  0:00:01"
43 vova1122
 
15.08.19
16:15
?(Дата("30.11.0002 00:00:00")=Дата("00.00.0000 00:00:00"),"Да","Нет") Возвращает "Да"    1С 8.3 (8.3.11.2867)
44 lodger
 
15.08.19
16:40
(42) (43) (41) (40) а теперь напишите у кого файловая, у кого мсскл, пострги и еще черта лысого.
45 Роспатнюк Сергей Сер
 
15.08.19
16:46
(44) мсскл
46 palsergeich
 
15.08.19
17:24
8.3.14.1565
MSSQL, файловая.
Клиент, сервер УФ
ОФ
Везде ?(Дата("30.11.0002 00:00:00")=Дата("00.00.0000 00:00:00"),"Да","Нет") Возвращает "Да"
47 dezss
 
15.08.19
17:30
(44) чиво?
А это нафига, если обращений к базе нет. О_О
48 НадюшаЯ
 
15.08.19
17:34
(47) ну вот с веб клиентом результаты разные в зависимости от директивы на клиенте и на сервере, для последней платформы
49 palsergeich
 
15.08.19
17:58
(48) А ты молодец)
Действительно на веб клиенте ?(Дата("30.11.0002 00:00:00")=Дата("00.00.0000 00:00:00"),"Да","Нет") Возвращает "Нет"
50 Сияющий в темноте
 
15.08.19
23:20
веб клиент код от 1с в javascript переводит,а там дата до секунд и честно считается,вот его и не проведешь.
вообще,1с использует линуксовую нотацию даты,а четыре знака после запятой как бы намекают,что внутри тип Currency из восьми байт со смещением.
51 НадюшаЯ
 
15.08.19
23:30
(50) ну я бы не сказала что честно) он ее как 01 01 2000 воспринимает)
52 Сияющий в темноте
 
16.08.19
00:06
в javascript дата,это обьект с полями.
53 dezss
 
16.08.19
10:32
(48) ну там был вопрос не про вариант запуска, а про тип субд.
54 НадюшаЯ
 
16.08.19
10:33
(53) это я просто поделилась наблюдениями)
55 dezss
 
16.08.19
10:34
(54) Они ценны, бузусловно. :)
56 Роспатнюк Сергей Сер
 
16.08.19
10:44
(32) https://yadi.sk/i/i8fgrx5BOp-hEg вот если обратить внимание на столбец Врем.(чистое) то увидим 6 знаков после запятой, отсюда вопрос а точно ли тип Currency.
57 Lama12
 
16.08.19
10:47
(40), (41) Я могу ошибаться, но вроде как раз между этими релизами, примерно в 8.3.10 1С сменило используемый компилятор. Они об этом писали в описании к платформам. Видимо реализация типа "дата" сменилась.
58 dezss
 
16.08.19
11:20
(57) Так у ТС тот же результат, что и у меня. Это (35) выбился из колеи. Может у него как раз (48)?
59 Роспатнюк Сергей Сер
 
16.08.19
11:28
(57) ну раз дошло до этого было бы интересно почитать какой используемый компилятор на какой поменяли и в каком релизе в описании 8.3.10 ничего такого не увидел.
60 Роспатнюк Сергей Сер
 
16.08.19
12:28
up
61 Вафель
 
16.08.19
13:11
время в 1с содержит милисекунду. в бд правда записать нельзя
62 Роспатнюк Сергей Сер
 
16.08.19
13:59
(61) если к дате можно прибавить 0.0001 от 1 секунды а это = 0.1 мс = 100 мкс, тогда получается что в микросекундах
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн