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

Как получить разницу дат (например в днях)?

Как получить разницу дат (например в днях)?
Я
   Roma1314704
 
10.12.18 - 18:56
1с 8.3
Вопрос  -как получить разницу дат? в днях или минутах?
Не в запросе! а в обычной функции

К примеру переменные -
ДатаС - какая-то дата вчера, позавчера И
ДатаПо - ТекущаяДата

Я никак не могу понять как это реализовать
 
 
   Волшебник
 
1 - 10.12.18 - 18:57
РазностьВДнях = (Дата2 - Дата1) / 86400;
   Roma1314704
 
2 - 10.12.18 - 19:02
Уточню вопрос на всяк случай - а если в переменной дата ещё есть и время?
   Конструктор1С
 
3 - 10.12.18 - 19:03
День = 60 * 60 * 24
Отсюда и пляшем
   Roma1314704
 
4 - 10.12.18 - 19:05
Т.е. разность дат - это цифра в секундах ?
   Волшебник
 
5 - 10.12.18 - 19:05
(2) пофиг
   exwill
 
6 - 10.12.18 - 19:09
(4) А какие могли бы быть варианты, по-твоему?
   exwill
 
7 - 10.12.18 - 19:11
(2) Время всегда есть, даже когда его нет. Такой вот парадокс реального мира.
   Garykom
 
8 - 10.12.18 - 19:35
Напомните сколько может быть максимально документов в одной секунде в одной базе? От файловая/sql зависит?
   Натуральный Йог
 
9 - 10.12.18 - 19:40
(4) Сейчас уже вроде в милисекундах. Недавно пацаны тут тёрли
   palsergeich
 
10 - 10.12.18 - 20:11
(8) В СКЛ неограниченно
 
 Рекламное место пустует
   palsergeich
 
11 - 10.12.18 - 20:11
(8) В файловой в документации на сколько помню тоже ограничений нет
   Garykom
 
12 - 10.12.18 - 21:27
(10) (11) Понял в 8-ке не хронологический порядок документов в отличие от 77 (где было 10000 доков макс в 1 секунде) а зависит от ссылки (УИДа) документов
   Garykom
 
13 - 10.12.18 - 21:28
(12)+ Хотя для доков одного вида, где УИДа формируются по правилам и включают в себя дату/время записи документа оно будет вполне с хронологией.
   palsergeich
 
14 - 10.12.18 - 21:55
(13)
Это же на чпеца основное - понимание того как документы внутри секунды идут
Фирма 1С описывает так:
Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методов других объектов, имеющих тип МоментВремени.
Момент времени используется в тех случаях, когда важно различать моменты времени для объектов, имеющих одинаковую дату и время, например для сравнения положений документов на временной оси.
А своими словами:
Момент времени - комбинация даты и ссылки на документ. Позволяет разделить и упорядочить документы в пределах одной секунды, выстраивая все документы в однозначную последовательность. Получение данных при проведении на момент времени гарантирует, что будут учтены движения сделанные в ту же секунду что и проводимый документ, но находящиеся перед ним.
Но есть особенность - документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7).  

Последнее выделенное автором предложение , правда, требует уточнения.
На мой взгляд, правильно так :
"Но есть особенность - документы разного типа , записанные в одну и ту же секунду, располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7). Документы же одного типа располагаются в порядке их физического создания."
   Garykom
 
15 - 10.12.18 - 22:03
(14) >Документы же одного типа располагаются в порядке их физического создания.

В случае работы задним числом (со сменой даты/времени на компе/сервере на прошедшее) что будет?
   palsergeich
 
16 - 10.12.18 - 22:09
(15) В документации написано следующее: документы внутри секунды могут распологатся в любом порядке.
В ссылке снизу советую обратить на строчку дополнительно упорядочиваются по значению ссылки документа.
Но документация писалась в тот момент, когда ГУИД был не TimeBased.
Сейчас он является TimeBased, хотя это официально в документации не описано.
То есть сейчас документы одного вида будут располагаться в порядке создания ГУИД процессом rmmanager, а создание ссылки, как и создание кода - процесс который в один момент времени выполняется только в одном месте.
https://its.1c.ru/db/metod8dev/content/2737/hdoc
   palsergeich
 
17 - 10.12.18 - 22:10
Я могу ошибаться конечно, но уид тоже, если не изменяет память, rmmanager создает
   palsergeich
 
18 - 10.12.18 - 22:11
(16) Но в документации данное поведение не описано и на это опираться нельзя
   palsergeich
 
19 - 10.12.18 - 22:14
Однако следует учитывать, что значение ссылки генерируется системой без какой-либо гарантии получения неубывающей последовательности. ключевая фраза в документации, неофициально - последовательность неубывающая, но это никак не хотят документировать
   Garykom
 
20 - 10.12.18 - 22:20
(19) Для неубывающей нужен счетчик (последнее значение) или каждый раз перед генерацией ГУИДа искать самое большое значение.

Это легко определяется (перебор с поиском наибольшего) по задержках при генерации ГУИДов на больших объемах в базе.
Счетчиков вроде бы нет, хотя хз место оно мало занимает даже если отдельные на каждый вид метаданных ссылочный.

Если TimeBased то даже гарантировать создание уникальных сложно, можно добиться что Random() выдаст (если создавать кучу ГУИДов в одну миллисекунду системную каждый раз перед созданием откатывая время на заданное) в конце концов уже существующий ГУИД а базе.
   palsergeich
 
21 - 10.12.18 - 22:25
http://catalog.mista.ru/public/635159/ хорошая статья на эту тему


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