|
Как получить разницу дат (например в днях)? | ☑ | ||
---|---|---|---|---|
0
Roma1314704
10.12.18
✎
18:56
|
1с 8.3
Вопрос -как получить разницу дат? в днях или минутах? Не в запросе! а в обычной функции К примеру переменные - ДатаС - какая-то дата вчера, позавчера И ДатаПо - ТекущаяДата Я никак не могу понять как это реализовать |
|||
1
Волшебник
10.12.18
✎
18:57
|
РазностьВДнях = (Дата2 - Дата1) / 86400;
|
|||
2
Roma1314704
10.12.18
✎
19:02
|
Уточню вопрос на всяк случай - а если в переменной дата ещё есть и время?
|
|||
3
Конструктор1С
10.12.18
✎
19:03
|
День = 60 * 60 * 24
Отсюда и пляшем |
|||
4
Roma1314704
10.12.18
✎
19:05
|
Т.е. разность дат - это цифра в секундах ?
|
|||
5
Волшебник
10.12.18
✎
19:05
|
(2) пофиг
|
|||
6
exwill
10.12.18
✎
19:09
|
(4) А какие могли бы быть варианты, по-твоему?
|
|||
7
exwill
10.12.18
✎
19:11
|
(2) Время всегда есть, даже когда его нет. Такой вот парадокс реального мира.
|
|||
8
Garykom
гуру
10.12.18
✎
19:35
|
Напомните сколько может быть максимально документов в одной секунде в одной базе? От файловая/sql зависит?
|
|||
9
Натуральный Йог
10.12.18
✎
19:40
|
(4) Сейчас уже вроде в милисекундах. Недавно пацаны тут тёрли
|
|||
10
palsergeich
10.12.18
✎
20:11
|
(8) В СКЛ неограниченно
|
|||
11
palsergeich
10.12.18
✎
20:11
|
(8) В файловой в документации на сколько помню тоже ограничений нет
|
|||
12
Garykom
гуру
10.12.18
✎
21:27
|
(10) (11) Понял в 8-ке не хронологический порядок документов в отличие от 77 (где было 10000 доков макс в 1 секунде) а зависит от ссылки (УИДа) документов
|
|||
13
Garykom
гуру
10.12.18
✎
21:28
|
(12)+ Хотя для доков одного вида, где УИДа формируются по правилам и включают в себя дату/время записи документа оно будет вполне с хронологией.
|
|||
14
palsergeich
10.12.18
✎
21:55
|
(13)
Это же на чпеца основное - понимание того как документы внутри секунды идут Фирма 1С описывает так: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методов других объектов, имеющих тип МоментВремени. Момент времени используется в тех случаях, когда важно различать моменты времени для объектов, имеющих одинаковую дату и время, например для сравнения положений документов на временной оси. А своими словами: Момент времени - комбинация даты и ссылки на документ. Позволяет разделить и упорядочить документы в пределах одной секунды, выстраивая все документы в однозначную последовательность. Получение данных при проведении на момент времени гарантирует, что будут учтены движения сделанные в ту же секунду что и проводимый документ, но находящиеся перед ним. Но есть особенность - документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7). Последнее выделенное автором предложение , правда, требует уточнения. На мой взгляд, правильно так : "Но есть особенность - документы разного типа , записанные в одну и ту же секунду, располагаются в произвольном порядке, а не в порядке их физического создания (как было в 7.7). Документы же одного типа располагаются в порядке их физического создания." |
|||
15
Garykom
гуру
10.12.18
✎
22:03
|
(14) >Документы же одного типа располагаются в порядке их физического создания.
В случае работы задним числом (со сменой даты/времени на компе/сервере на прошедшее) что будет? |
|||
16
palsergeich
10.12.18
✎
22:09
|
(15) В документации написано следующее: документы внутри секунды могут распологатся в любом порядке.
В ссылке снизу советую обратить на строчку дополнительно упорядочиваются по значению ссылки документа. Но документация писалась в тот момент, когда ГУИД был не TimeBased. Сейчас он является TimeBased, хотя это официально в документации не описано. То есть сейчас документы одного вида будут располагаться в порядке создания ГУИД процессом rmmanager, а создание ссылки, как и создание кода - процесс который в один момент времени выполняется только в одном месте. https://its.1c.ru/db/metod8dev/content/2737/hdoc |
|||
17
palsergeich
10.12.18
✎
22:10
|
Я могу ошибаться конечно, но уид тоже, если не изменяет память, rmmanager создает
|
|||
18
palsergeich
10.12.18
✎
22:11
|
(16) Но в документации данное поведение не описано и на это опираться нельзя
|
|||
19
palsergeich
10.12.18
✎
22:14
|
Однако следует учитывать, что значение ссылки генерируется системой без какой-либо гарантии получения неубывающей последовательности. ключевая фраза в документации, неофициально - последовательность неубывающая, но это никак не хотят документировать
|
|||
20
Garykom
гуру
10.12.18
✎
22:20
|
(19) Для неубывающей нужен счетчик (последнее значение) или каждый раз перед генерацией ГУИДа искать самое большое значение.
Это легко определяется (перебор с поиском наибольшего) по задержках при генерации ГУИДов на больших объемах в базе. Счетчиков вроде бы нет, хотя хз место оно мало занимает даже если отдельные на каждый вид метаданных ссылочный. Если TimeBased то даже гарантировать создание уникальных сложно, можно добиться что Random() выдаст (если создавать кучу ГУИДов в одну миллисекунду системную каждый раз перед созданием откатывая время на заданное) в конце концов уже существующий ГУИД а базе. |
|||
21
palsergeich
10.12.18
✎
22:25
|
http://catalog.mista.ru/public/635159/ хорошая статья на эту тему
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |