Функция сравнить() момента времени

1. user950703 07.11.22 18:23 Сейчас в теме
Доброе время суток, уважаемые.

Помогите, пожалуйста, разобраться в давней (для меня) проблеме.

В статье "Эх... МоментВремени() !" (https://infostart.ru/1c/articles/84177/) предпринята попытка ответа на вопрос: "Два документа записаны с одинаковой датой . Какой из документов будет левее (раньше) на временной оси ?"
В самом общем виде выводы статьи относительно этого объекта, в частности, сводятся к тому, что "Механизм генерации ссылок (на документ) обеспечивает только их уникальность. Возрастающая последовательность при их генерации не обеспечивается." (приводятся слова Нуралиева).
Между тем, у типа МоментВремени есть метод Сравнить(), возвращающий результаты:
Тип: Число.
-1 - если момент времени меньше другого момента времени, 0 - если момент времени равен другому моменту времени, 1 - если момент времени больше другого момента времени.
А теперь вопрос (ы):
1. В каком смысле трактовать понятие Больше/Меньше для МоментаВремени?
2. Какой практический смысл (например, контроль остатков в регистре) имеет это сравнение?

Буду признателен за прояснение.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1831019 07.11.22 18:32 Сейчас в теме
1. Точно так же как и для Даты.
2. Например, Партионный учет, ГТД, расчет по документам и т.д. Регистры тут вообще при чем? В регистрах нет момента времени.
3. user950703 07.11.22 18:56 Сейчас в теме
(2) Раз моменты времени с одинаковой датой /временем располагаются не обязательно в порядке их записи движений при проведении, то и состояние остатков в регистрах накопления нее определяется этим порядком. Это так?
4. user950703 07.11.22 19:06 Сейчас в теме
(3) Проясню вопрос. Есть два однотипных документа. С одинаковым датой и временем. Какой результат даст метод Сравнить() и как его понимать?
6. spacecraft 07.11.22 19:26 Сейчас в теме
(4) все просто. Сравнение по дате и ссылке. Это все. Ничего более.
7. user950703 07.11.22 19:41 Сейчас в теме
(6) Это бы имело смысл при сравнении по равенству. А по неравенству? (> или <)?
8. spacecraft 07.11.22 19:43 Сейчас в теме
(7)
Это бы имело смысл при сравнении по равенству

Как раз по равенству это вообще не имеет смысла. Единственно возможная комбинация равенства, это одной и той же ссылки.
12. user950703 07.11.22 19:48 Сейчас в теме
(6) Допустим. А по неравенству?
(8)
5. user1831019 07.11.22 19:25 Сейчас в теме
(3)
не обязательно в порядке их записи движений
Причем тут движения документа? Речь только о моменте записи документа. А вот они как раз записываются строго последовательно.

Момент времени - это просто порядковый номер записи внутри этой секунды.
9. user950703 07.11.22 19:46 Сейчас в теме
(5) Напомню, момент времени - это комбинация даты-времени, с точностью до секунды и ссылки на документ. Если дата-время одинаковы, то какой документ ">"? Вопрос именно в этом. Если это просто порядковый номер внутри секунды, то какой документ - первый, какой - dторой и т.д?
10. spacecraft 07.11.22 19:48 Сейчас в теме
(9)
Если дата-время одинаковы, то какой документ ">"?

У которого гуид будет больше.
13. user950703 07.11.22 19:50 Сейчас в теме
(10) Гуид больше ? Это что-то новое. Можете сослаться на определение неравенства где-нибудь?
14. spacecraft 07.11.22 19:52 Сейчас в теме
(13) начните с понятия гуид, guid, ну и в терминах 1С УникальныйИдентификатор. Он имеет представление из набора групп 16 чисел разделенных символом "-".
Вот тупо строковое сравнение, что больше...
16. user950703 07.11.22 19:55 Сейчас в теме
(6) Что такое гуид я знаю. Также знаю, что сравнение на больше-меньше в гуиде отсутствует. Если это понимается в смысле сравнения символьных представлений - приведите это определение.
(14)
17. spacecraft 07.11.22 19:58 Сейчас в теме
(16) я вам дал направление. Если надо, то сами ищите определения.
Могу дать направление: начните с анализа плана выполнения запроса, в котором есть сортировка по МоментВремени или по Ссылка.
Ну и посмотрите как Ссылка хранится в таблицах базы данных.
18. user950703 07.11.22 20:01 Сейчас в теме
(6) Спасибо за направление. Но, похоже, оно не туда ведет. Могу отправить к первоисточнику.
(17) (https://infostart.ru/1c/articles/84177/). Почитайте. Удивитесь, я Вам гарантирую.
19. spacecraft 07.11.22 20:09 Сейчас в теме
(18) статья на инфостарте стала первоисточником? Давно?
Теперь конкретно, где говорится, что сравнение идет не по гуид?
Перечитали? Удивились?
20. user950703 07.11.22 20:35 Сейчас в теме
(19) 1. Первоисточником моего поста, так точнее.
(19) 2. В этой статье говорится, что "документы проведенные в одну и ту же секунду располагаются в произвольном порядке, а не в порядке их физического создания".
Поэтому расчет на то, что по гуиду и каким-либо представлениям на его основе может быть основой для упорядочения в пределах секунды - неверен в общем случае. На это не стоит полагаться. Это может сработать в частном случае, но возможность такая - недокументирована. Поэтому я и просил у Вас определения в документации 1С. А иначе все может слететь с приходом очередного обновления платформы.
Таким образом, на оператор Сравнить(), имхо, полагаться не стоит.
21. spacecraft 07.11.22 20:39 Сейчас в теме
(20) а теперь где я что-то говорил об обратном?
"все просто. Сравнение по дате и ссылке. Это все. Ничего более."
"У которого гуид будет больше"
Где мной было сказано, как они формируются?
Перечитали? Удивились?
23. user950703 07.11.22 20:46 Сейчас в теме
(21) Может быть и больше. Но, согласно первоисточнику, от этого нет никакого проку. А в этом и состоял вопрос.
24. coollerinc 195 07.11.22 20:49 Сейчас в теме
(21) Вы по второму кругу объясняете тему с моментом времени))) Утром мне в теме(https://forum.infostart.ru/forum9/topic289602/), теперь еще одному человеку.
25. user950703 07.11.22 20:54 Сейчас в теме
(24)Это Вы мне? Я тут совершенно не причем. Просто задал вопрос.
11. user1831019 07.11.22 19:48 Сейчас в теме
(9) Просто получи уже в запросе МоментВремени, и посмотри что там содержится.
15. user950703 07.11.22 19:52 Сейчас в теме
(11)Не желательно. Возможны конвертации данных при приведении к экранной форме. На источники какие-нибудь можете сослаться?
22. user950703 07.11.22 20:41 Сейчас в теме
(15) Горький опыт проектов. Но, вроде уже оффтоп.
26. fixin 4269 29.08.24 20:31 Сейчас в теме
Дам вам такой код для за-травочки:
Функция КрайнийИзМоментовВремени(МассивДокументов, Направление, ОпорныйДокумент = Неопределено)
	//Направление 1 - вперед во времени, -1 назад во времени
	//Проверять дату опорного документа надо отдельно

	ЛучшийМомент = Неопределено;
	ЛучшийДокумент = Неопределено; 
	
	//Если есть опорный документ, его момент и считаем лучшим, остальные должны быть лучше его
	Если ОпорныйДокумент <> Неопределено Тогда
		ЛучшийМомент = ОпорныйДокумент.МоментВремени();
	КонецЕсли;
	
	Для Каждого Документ ИЗ МассивДокументов Цикл
		МоментВремени = Документ.МоментВремени();
		Если ЛучшийМомент = Неопределено Тогда
			ЛучшийМомент = МоментВремени;
			ЛучшийДокумент = Документ;
		Иначе                           
			Если Направление = 1 И МоментВремени.Сравнить(ЛучшийМомент) = 1 Тогда
				ЛучшийМомент = МоментВремени;
				ЛучшийДокумент = Документ;
			ИначеЕсли Направление = -1 И МоментВремени.Сравнить(ЛучшийМомент) = -1 Тогда
				ЛучшийМомент = МоментВремени;
				ЛучшийДокумент = Документ;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат ЛучшийДокумент;
	
КонецФункции
Показать
Оставьте свое сообщение

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