А кто-нить в курсе, почему 1С не умеет в даты больше 3999 года при записи в БД?

1. herfis 498 17.01.19 18:48 Сейчас в теме
Что это за сакральная граница, если тот же сиквел умеет в 9999? Даже с учетом фокуса со смещением дат не сростается.
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 17.01.19 18:51 Сейчас в теме
(1) Собственно зачем больше?
Вот такое вот техническое ограничение, как например, максимальное количество строк в тч
+
3. TODD22 18 17.01.19 18:52 Сейчас в теме
(2)
Собственно зачем больше?

Может секрет вечной жизни раскрыл....
+
4. herfis 498 17.01.19 18:58 Сейчас в теме
У любого технического ограничения есть непосредственная причина.
Интересно было бы ее узнать, потому что в данном случае она неочевидна.
Это называется "любопытство".
+
9. ben19791010 18.01.19 07:01 Сейчас в теме
(4)
"любопытство"
поставил бухам дату запрета редактирования? )))
+
19. herfis 498 18.01.19 10:25 Сейчас в теме
(9) Почти угадал :)
Настраивал как-то синхронизацию одной самописки с внешней системой (плюсы и сиквел) и так как статусов документов во внешней системе не было, то ее пользователи вместо удаления переносили документы в будущую дату. Ну и, соответственно, когда забросили сильно далеко потомкам, то обмен сломался :)
Вот тогда вопрос и засел. Почему именно 3999?
+
12. ben19791010 18.01.19 09:21 Сейчас в теме
(2)
Вот такое вот техническое ограничение

откуда такая уверенность- чем накладывается это ограничение(не платформой же)?
+
6. Xershi 1484 17.01.19 19:15 Сейчас в теме
(1) читайте документацию по СУБД.
+
14. herfis 498 18.01.19 10:01 Сейчас в теме
(6) Читаю:
datetime Description
Date range January 1, 1753, through December 31, 9999
Куда еще почитать?
+
7. spacecraft 17.01.19 19:17 Сейчас в теме
(1) в ms sql есть ограничение на диапазон, но нижний. "С я января 1753 года до 31 декабря 9999 года"
В 1С диапазон начинается с 1 года. Напрямую сохранить в базу без преобразования нельзя. Обычно настроено на прибавление к сохраняемой дате 2000 лет.
https://its.1c.eu/db/metod8dev#content:4055:hdoc

В любом случае необходимы ограничения. Почему выбрали именно 3999 не известно. Может есть еще какие особенности.
Infector; Swetlana; +2
13. herfis 498 18.01.19 09:55 Сейчас в теме
(7)
Почему выбрали именно 3999 не известно. Может есть еще какие особенности.

Об этих то особенностях и задан сабжевый вопрос.
Но спасибо всем, кто поторопился меня проинформировать о том, что я и так знал :)
Про смещение дат я сам же сразу и упомянул, сказав что даже с его учетом не сростается. Непонятно, почему 3999.
+
18. spacecraft 18.01.19 10:21 Сейчас в теме
(13) это ограничение может вытекать из-за механизма преобразования дат при сохранении в БД.
Могу предположить, что просто прибавление кол-ва секунд (). И это уже просто искусственное ограничение разрядности.
+
21. herfis 498 18.01.19 10:49 Сейчас в теме
(18) Скорее всего именно так и есть. Но как именно оно работает - было бы интересно понять.
И получается, что разрядность ограничена для упрощения алгоритма преобразования. Это единственное логичное предположение, которое я могу сделать.
Но компромисс получился такой - спорный...
+
22. ben19791010 18.01.19 10:50 Сейчас в теме
(21)
И получается, что разрядность ограничена для упрощения алгоритма преобразования

чё т как то не убедительно звучит ))
+
23. herfis 498 18.01.19 10:52 Сейчас в теме
(22)
Одинэсная дата - позволяет.
Сиквельная дата - позволяет.
Но преобразование одинэсной даты в сиквельную - не позволяет.
Какие еще могут быть выводы?
+
24. ben19791010 18.01.19 10:58 Сейчас в теме
(23)
преобразование одинэсной даты в сиквельную - не позволяет

значит все-таки действительно тех.ограничение(только вот с посредственной причиной)
+
27. mkalimulin 1166 18.01.19 16:41 Сейчас в теме
(13)
"
- Это число зверя.
- Где?
- Ну вот если 999 перевернуть.
- А зачем переворачивать?
"
+
28. herfis 498 18.01.19 17:32 Сейчас в теме
(27) Согласен, 666Е смотрится круче чем 6666.
Первая правдоподобная версия!
+
29. mkalimulin 1166 18.01.19 18:08 Сейчас в теме
(28) А если серьезно, то границы дат, конечно, зависят от количества бит выделенных под хранение дат и от точности хранения. Далее. Никто не использует возможный диапазон полностью. Потому что тогда у тебя нижняя граница была бы 1 января какого-то года, а верхняя какое-нибудь 11 марта 13:08:26 и т.д. Или наоборот. В любом случае запоминать неудобно. Поэтому диапазон обрезают до года, до ста лет, до тысячи. В каждом конкретном случае - это произвольное решение разработчиков: где установить нижнюю границу и как обрезать.
+
8. Fox-trot 158 17.01.19 21:13 Сейчас в теме
(1)документацию потерял?
+
20. spacecraft 18.01.19 10:40 Сейчас в теме
(1) в любом случае это искусственное ограничение. О причинах можно только гадать.
Может из-за принятой даты рассчитываемых итогов.
+
5. herfis 498 17.01.19 19:01 Сейчас в теме
Причем заметьте - непосредственно формат даты 1С позволяет формировать даты до 9999 года. Т.е. дело не в формате даты 1С непосредственно.
1С кидает исключение при попытке записи даты больше 3999 именно в базу данных.
+
10. ben19791010 18.01.19 07:11 Сейчас в теме
ну запись ограничена ограничением календаря до 4000 г, это понятно, вопрос в другом, возможно ли изменить например
Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда 
		Возврат;
	КонецЕсли;
	
	Если ДатаОкончанияАктуальности = '00010101000000' Тогда 
		ДатаОкончанияАктуальности = '39991231235959';
	КонецЕсли;
	
КонецПроцедуры
Показать
maximus_2712; +1
11. Неопределено 90 18.01.19 07:22 Сейчас в теме
В "1С:Предприятии 8" даты могут принимать значения с 00:00:00 1 января 1 года по 23:59:59 31 декабря 9999 года, причем, записаны в базу данных могут быть даты с 00:00:00 1 января 1 года по 23:59:59 31 декабря 3999 года.

С ИТС
Swetlana; +1
15. ben19791010 18.01.19 10:05 Сейчас в теме
а не подскажете римское летоисчисление не ограничивается 3999?
+
26. mkalimulin 1166 18.01.19 16:38 Сейчас в теме
(15) Римское летоисчисление ограничивалось десятью месяцами. Потом была зима, ее никто не считал. А с началом весны начинались новые 10 месяцев.
+
16. Boneman 298 18.01.19 10:10 Сейчас в теме
Когда коту делать нечего, мы давно знали чем он занимается ))

А теперь мы знаем, что делает программист - когда ему заняться нечем ))
ben19791010; +1
17. herfis 498 18.01.19 10:18 Сейчас в теме
25. nyam-nyam 18.01.19 11:30 Сейчас в теме
Это как бы намёк на конец света. :)
+
30. alfakorea 20.01.19 10:19 Сейчас в теме
выходит не получится на восьмерке сидеть в 4000-м году? Так то это умышленно заложенный ограниченный ресурс, что бы обновлялись почаще :)
shiaju; +1
31. spe1c 5 20.01.19 12:51 Сейчас в теме
Где то писали про это. Потому что к 4000 году запланирован выход платформы 1С Предприятие 9.
maximus_2712; annagolinskaya; +2
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот