Запись документов в произвольной временной позиции в пределах одной секунды #240288


#0 by userm
Есть ситуация: несколько документов разных видов, во всех есть реквизит Time Stamp (строка со временем с точностью до 0,000001 сек.), например 01.01.01.01.01.01.123456 Есть документы у которых время совпадает до секунды, так вот требуется новый документ при записи располагать в последовательности Time Stamp если его время совпадет с уже существующими до секунды. Как сделать средствами платформы? Например: Документ 1, Time Stamp 01.01.01.01.01.01.123456 Документ 2, Time Stamp 01.01.01.01.01.01.123458 При записи документа 3 с Time Stamp 01.01.01.01.01.01.123457 он должен записаться после первого, но перед вторым. Есть вариант программно сортировать такие документы с помощью метода УстановитьВремя, но как это сделать в пределах одной секунды и не затрагивать другие документы? Вопрос к разработчикам: почему в системе есть метод сравнения моментов времени двух документов, и нет времени записи с произвольным моментом времени?
#1 by dimoff
Самое умное - добавить поле числовое и в запросах сортировать по нему.
#2 by Господин ПЖ
8.0 не умеет позицианировать документ в пределах секунды.
#3 by dimoff
А так можно их записать на другое время и потом в нужной последовательности перезаписывать на требуемое. Не могу представить себе бизнес-процесс где подобное необходимо делать постоянно.
#4 by MikleV
+ 1
#5 by megalodon
#6 by dimoff
А можно НовыйОбъект.Дата = Документперед.Дата + 0.5; ?
#7 by userm
поле это и само собой понятно ... но требуется не сортировать по нему в запросе, а именно сделать запись в регистр нужным моментом времени ... потом остатки из регистра считываются на позицию документа, а не на дату
#8 by MikleV
который третий что, неужели будет между?
#9 by userm
нельзя ... см. описание типа дата ...
#10 by megalodon
не, отбой, чето не очень пока взлетает.
#11 by vde69
1с позицеонирует доки внутри 1 секунды по признаку "сортировка по уникальному идентификатору" по этому твоя идея обречена...
#12 by megalodon
работает, но вот это не работает:
#13 by dimoff
В 6 ирония, если не понял
#14 by userm
откуда такая инфа по поводу сортировки внутри секунды по guid-у ? ... что то не верится ...
#15 by MikleV
гы. а у третьего из какая дата/время  интересн.
#16 by MikleV
да да..
#17 by MikleV
+ в смысле он прав
#18 by dimoff
Откуда такая информация?
#19 by userm
даже если они сортируются по гуид, значит гуид содержит в себе тот самый time stamp, а значит я могу управлять позицией документов, подправляя гуид документа как мне нужно в пределах секунды, так получается ?
#20 by MikleV
низнаю. имхо заипёшься выковыривать в статье читал. с итс'а
#21 by dimoff
Не проще ?
#22 by userm
как раз не заипюсь ... у меня все данные есть, а значит их можно использовать ... первые три составные части гуид по словам майкрософт как раз и образуют временную метку с точностью до 1 нс ... что и требуется ...
#23 by Neco
Непонятно только зачем
#24 by IMHO
Документы сортируются по моменту времени. момент времени = дата + время + ссылка. ссылка это набор символов то есть временной беспорядок.
#25 by Neco
Кстати ответ на партнерском форуме по поводу вопроса : "Как и в 1С:Предприятии 7.7 в пределах секунды документы упорядочиваются по значению ссылки (внутреннему идентификатору). Управлять этим порядком нельзя, так как он не может быть изменен у объекта. Наличие такого упорядочивания позволяет обеспечить неизменную последовательность при всех выборках. Но чтобы указать какую-либо определенную последовательность, необходимо изменять дату документа. Соответственно все команды перестановки документов выполняют изменение даты и могут переставлять документы только с отличающейся датой. Так как значение идентификатора уникально среди всех таблиц, то и без наличия общей таблицы обеспечивается сквозная логическая последовательность документов, которая будет проявляться в журналах, регистрах, запросах соединяющих документы разных видов."
#26 by Neco
+ Функционал 1С в ближайшие 100 лет менять не собирается ;-)
#27 by Advan
Есть моментВремени
#28 by vde69
ты отчасти не прав, по скольку ссылка это и есть гуид а в нем зашито точное время, только вот сортируеться не по времени, а по СТРОКЕ гуид и тут полный кирдык
#29 by userm
не получается ... пробовали отрабатывать такую ситуацию - например була отгрузка, затем сторно и ещё одна отгрузка со временем совпадающим со сторно, так вот вторая отгрузка не проводилась, ибо вставала по позиции раньше сторно (товара нет), если сдвигаешь время второй отгрузки на секунду больше, то проводится, сдвигаешь после этого обратно - снова не проводится - мистика какая то ...
#30 by Neco
РиадОнли
#31 by userm
никакого кирдыка - достаточно вычленить из гуида то самое время, а затем записать нужное ... т.е. назначить объекту новый гуид - вот и все ... ладно спасибо за подсказку по поводу сортировки по гуид ... попробую реализовать
#32 by Neco
Не понятно, что секунд в минуте не хватает, что бы выстроить документы по порядку?
#33 by dimoff
Завидую человеку, если он узнал о всех таблицах 8ки и готов заменить во всех них ссылку.
#34 by userm
не хватает - особенно если транзакции грузятся из другой системы, в которой реализован механизм хранения времени с точностью до 1 нс
#35 by vde69
тогда тебе придеться переписявать механизм присвоения гуида... кроме того подумай что будет с обьектом если я у него поменяю время (например на 1 час), поэтому гуид далеко не всегда хранит в себе актуальное время, вместо него ты будешь иметь время создания...
#36 by userm
да млин зачем же во всех таблицах ... есть конкретный документ - у него есть гуид, так вот при записи гуида можно временную его часть заменить на time stamp
#37 by Neco
Ну и что тебе совпадение во времени нужно, с точностью до 1нс? Как получаешь из той системы так по порядку документы записывай
#38 by Neco
Ты тратишь много времени на вопрос, который можно решить без всяких "выкрутасов"
#39 by dimoff
При записи нового? Ты же говорил, что надо вставить между?
#40 by userm
если гуид хранит в себе время создания, то как же тогда происходит сортировка документов созданных задним числом? особенно если я програмно записываю их в меньшую позицию, у них что при этом меняется гуид что ли?
#41 by userm
правильно - между ... но вставить то новый !
#42 by userm
ну ка подскажи как - пример у тебя есть сотня транзакций в пределах одной секунды, которые все же упорядочены внутри неё по time stamp - ну и как же ты будешь создавать новый документ?
#43 by vde69
много думаем... гуид хранит время создания в не явном виде а сортировка идет по символьному представлению гуида
#44 by Neco
Буду создавать в разных секундах по порядку, счетчиком рассчитывая позицию.
#45 by userm
секунд не хватит ... а если придется сдвигать часть документов вверх на одну секунду то что будешь их перепроводить что ли ?
#46 by Neco
У тебя есть минуты ;-) Время так важно сохранять?
#47 by Neco
Делаешь выборку документов из системы, они у тебя упорядочены по наносекундам  и начинаешь создавать документы начиная с первой секунды дня. Т.е. 1 документ 1 сек, втрой - 2я секунда..... 100000 - 10000 секунда дня. Они у тебя будут в том порядке в котором вводились в систему. Можно более гибче в пределах часа
#48 by userm
в том то и задача что время важно сохранять ... с точностью до 1 нс а если у тебя вдруг придет спустя сотнб документов новый, который нужно было записать в начало дня - ты что будешь все существующие сдвигать вверх? )))
#49 by Neco
Документ.УстановитьВремя(РежимАвтоВремя.Первым);
#50 by userm
не - ну как вариант конечно, но не покатит ... нужно хранить изначальное время ... а по поводу сортировки по гуид в пределах одной секунды - это по-моему вряд ли, иначе изначально созданные два документа с одинаковой датой нельзя было бы перемещать друг относитльено друга (гуид то при этом не меняется), а это можно делать ...
#51 by shuhard
1 0,000001 сек - не нано, а микросекунда. 2 Таймер в нс сделать тяжко,ибо это 1Ггц,прерывания утопят ОС. + сиквел захлебнется вводить документы даже с лагом 1 сек в течении долгого времени, не оставив места для масштабирования. 3 В архитектуре системы ошибка: если это биллинг,то надо поток сузить, записывая некие суммы, а не первичку. если это всемирные биржи , то выбор 1С надо обосновывать крэш-тестами.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям