Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Разница двух пустых дат

Разница двух пустых дат
Я
   Роспатнюк Сергей Сер
 
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, подскажите в чем отличие этих двух на вид пустых дат ?
 
 
   mikecool
 
1 - 15.08.19 - 10:11
первая дата не пустая
   palsergeich
 
2 - 15.08.19 - 10:11
01.01.0001 00:00:01, с точки зрения 1с это не пустая дата.
А первая секунда 1 года
   palsergeich
 
3 - 15.08.19 - 10:13
(2) Дата(00.00.0000 00:00:00) и да это тоже не пустая дата с точки зрения 1с доки
   palsergeich
 
4 - 15.08.19 - 10:13
(3) пустая дата это Дата (1,1,1,0,0,0)
   palsergeich
 
5 - 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 месяц второго года ?
   palsergeich
 
9 - 15.08.19 - 10:19
(8) потому что грабли.
Исходя из стандарта датавремя xml пустая дата 00010101 и исходя из этого писался остальной код.
А запись в виде 0000000 что то сломала
   НЕА123
 
10 - 15.08.19 - 10:20
Дата("00.00.0000 00:00:00")=30.11.0002  0:00:00
   palsergeich
 
11 - 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, кавычку пропустил ))
   vova1122
 
14 - 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.
Я об этом говорил Нуралиеву, он сам был слегка обескуражен.
   НЕА123
 
16 - 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
   sitex
 
18 - 15.08.19 - 10:28
(15) Тогда что в остатки 0.001 ?  Что это дата ? Число ? Рудимент даты?
   vova1122
 
19 - 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) согласен
   ptiz
 
23 - 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) может еще отладчик с его точностю замеров времени выполнения кода юзает эту фичю
   vova1122
 
27 - 15.08.19 - 10:48
(25) Но  ДатаДок1-ДатаДок2  этого не покажет?
   Волшебник
 
28 - 15.08.19 - 10:50
Вопросы, загадки... Такого не расскажут на РенТВ...
   Роспатнюк Сергей Сер
 
29 - 15.08.19 - 11:07
Закрываем, загадки будем в другом месте решать)
   unregistered
 
30 - 15.08.19 - 11:50
(23) >> не хватает возможности хранить тысячные доли в дате документов, чтобы в одну секунду запихнуть несколько документов в нужной последовательности.

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

плучается разница=0,1235 (система округляет до 4 знаков)
   dezss
 
33 - 15.08.19 - 12:48
Пасхалка от 1с.
   dezss
 
34 - 15.08.19 - 12:56
(33) 30 ноября
Международный день защиты информации
   Вафель
 
35 - 15.08.19 - 13:29
   dezss
 
36 - 15.08.19 - 14:13
   1Сергей
 
37 - 15.08.19 - 14:28
(35) (36) платформы назовите
   Lama12
 
38 - 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
   dezss
 
41 - 15.08.19 - 15:49
(37) 8.3.8.2088
   sitex
 
42 - 15.08.19 - 15:57
(37) На 8.3.14.1630 то же "30.11.0002  0:00:01"
   vova1122
 
43 - 15.08.19 - 16:15
?(Дата("30.11.0002 00:00:00")=Дата("00.00.0000 00:00:00"),"Да","Нет") Возвращает "Да"    1С 8.3 (8.3.11.2867)
   lodger
 
44 - 15.08.19 - 16:40
(42) (43) (41) (40) а теперь напишите у кого файловая, у кого мсскл, пострги и еще черта лысого.
   Роспатнюк Сергей Сер
 
45 - 15.08.19 - 16:46
(44) мсскл
   palsergeich
 
46 - 15.08.19 - 17:24
8.3.14.1565
MSSQL, файловая.
Клиент, сервер УФ
ОФ
Везде ?(Дата("30.11.0002 00:00:00")=Дата("00.00.0000 00:00:00"),"Да","Нет") Возвращает "Да"
   dezss
 
47 - 15.08.19 - 17:30
(44) чиво?
А это нафига, если обращений к базе нет. О_О
   НадюшаЯ
 
48 - 15.08.19 - 17:34
(47) ну вот с веб клиентом результаты разные в зависимости от директивы на клиенте и на сервере, для последней платформы
   palsergeich
 
49 - 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 дата,это обьект с полями.
   dezss
 
53 - 16.08.19 - 10:32
(48) ну там был вопрос не про вариант запуска, а про тип субд.
   НадюшаЯ
 
54 - 16.08.19 - 10:33
(53) это я просто поделилась наблюдениями)
   dezss
 
55 - 16.08.19 - 10:34
(54) Они ценны, бузусловно. :)
   Роспатнюк Сергей Сер
 
56 - 16.08.19 - 10:44
(32) https://yadi.sk/i/i8fgrx5BOp-hEg вот если обратить внимание на столбец Врем.(чистое) то увидим 6 знаков после запятой, отсюда вопрос а точно ли тип Currency.
   Lama12
 
57 - 16.08.19 - 10:47
(40), (41) Я могу ошибаться, но вроде как раз между этими релизами, примерно в 8.3.10 1С сменило используемый компилятор. Они об этом писали в описании к платформам. Видимо реализация типа "дата" сменилась.
   dezss
 
58 - 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 мкс, тогда получается что в микросекундах


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.