#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 он должен записаться после первого, но перед вторым. Есть вариант программно сортировать такие документы с помощью метода УстановитьВремя, но как это сделать в пределах одной секунды и не затрагивать другие документы? Вопрос к разработчикам: почему в системе есть метод сравнения моментов времени двух документов, и нет времени записи с произвольным моментом времени?
#3
by dimoff
А так можно их записать на другое время и потом в нужной последовательности перезаписывать на требуемое. Не могу представить себе бизнес-процесс где подобное необходимо делать постоянно.
#7
by userm
поле это и само собой понятно ... но требуется не сортировать по нему в запросе, а именно сделать запись в регистр нужным моментом времени ... потом остатки из регистра считываются на позицию документа, а не на дату
#11
by vde69
1с позицеонирует доки внутри 1 секунды по признаку "сортировка по уникальному идентификатору" по этому твоя идея обречена...
#14
by userm
откуда такая инфа по поводу сортировки внутри секунды по guid-у ? ... что то не верится ...
#19
by userm
даже если они сортируются по гуид, значит гуид содержит в себе тот самый time stamp, а значит я могу управлять позицией документов, подправляя гуид документа как мне нужно в пределах секунды, так получается ?
#22
by userm
как раз не заипюсь ... у меня все данные есть, а значит их можно использовать ... первые три составные части гуид по словам майкрософт как раз и образуют временную метку с точностью до 1 нс ... что и требуется ...
#24
by IMHO
Документы сортируются по моменту времени. момент времени = дата + время + ссылка. ссылка это набор символов то есть временной беспорядок.
#25
by Neco
Кстати ответ на партнерском форуме по поводу вопроса : "Как и в 1С:Предприятии 7.7 в пределах секунды документы упорядочиваются по значению ссылки (внутреннему идентификатору). Управлять этим порядком нельзя, так как он не может быть изменен у объекта. Наличие такого упорядочивания позволяет обеспечить неизменную последовательность при всех выборках. Но чтобы указать какую-либо определенную последовательность, необходимо изменять дату документа. Соответственно все команды перестановки документов выполняют изменение даты и могут переставлять документы только с отличающейся датой. Так как значение идентификатора уникально среди всех таблиц, то и без наличия общей таблицы обеспечивается сквозная логическая последовательность документов, которая будет проявляться в журналах, регистрах, запросах соединяющих документы разных видов."
#28
by vde69
ты отчасти не прав, по скольку ссылка это и есть гуид а в нем зашито точное время, только вот сортируеться не по времени, а по СТРОКЕ гуид и тут полный кирдык
#29
by userm
не получается ... пробовали отрабатывать такую ситуацию - например була отгрузка, затем сторно и ещё одна отгрузка со временем совпадающим со сторно, так вот вторая отгрузка не проводилась, ибо вставала по позиции раньше сторно (товара нет), если сдвигаешь время второй отгрузки на секунду больше, то проводится, сдвигаешь после этого обратно - снова не проводится - мистика какая то ...
#31
by userm
никакого кирдыка - достаточно вычленить из гуида то самое время, а затем записать нужное ... т.е. назначить объекту новый гуид - вот и все ... ладно спасибо за подсказку по поводу сортировки по гуид ... попробую реализовать
#33
by dimoff
Завидую человеку, если он узнал о всех таблицах 8ки и готов заменить во всех них ссылку.
#34
by userm
не хватает - особенно если транзакции грузятся из другой системы, в которой реализован механизм хранения времени с точностью до 1 нс
#35
by vde69
тогда тебе придеться переписявать механизм присвоения гуида... кроме того подумай что будет с обьектом если я у него поменяю время (например на 1 час), поэтому гуид далеко не всегда хранит в себе актуальное время, вместо него ты будешь иметь время создания...
#36
by userm
да млин зачем же во всех таблицах ... есть конкретный документ - у него есть гуид, так вот при записи гуида можно временную его часть заменить на time stamp
#37
by Neco
Ну и что тебе совпадение во времени нужно, с точностью до 1нс? Как получаешь из той системы так по порядку документы записывай
#40
by userm
если гуид хранит в себе время создания, то как же тогда происходит сортировка документов созданных задним числом? особенно если я програмно записываю их в меньшую позицию, у них что при этом меняется гуид что ли?
#42
by userm
ну ка подскажи как - пример у тебя есть сотня транзакций в пределах одной секунды, которые все же упорядочены внутри неё по time stamp - ну и как же ты будешь создавать новый документ?
#43
by vde69
много думаем... гуид хранит время создания в не явном виде а сортировка идет по символьному представлению гуида
#45
by userm
секунд не хватит ... а если придется сдвигать часть документов вверх на одну секунду то что будешь их перепроводить что ли ?
#47
by Neco
Делаешь выборку документов из системы, они у тебя упорядочены по наносекундам и начинаешь создавать документы начиная с первой секунды дня. Т.е. 1 документ 1 сек, втрой - 2я секунда..... 100000 - 10000 секунда дня. Они у тебя будут в том порядке в котором вводились в систему. Можно более гибче в пределах часа
#48
by userm
в том то и задача что время важно сохранять ... с точностью до 1 нс а если у тебя вдруг придет спустя сотнб документов новый, который нужно было записать в начало дня - ты что будешь все существующие сдвигать вверх? )))
#50
by userm
не - ну как вариант конечно, но не покатит ... нужно хранить изначальное время ... а по поводу сортировки по гуид в пределах одной секунды - это по-моему вряд ли, иначе изначально созданные два документа с одинаковой датой нельзя было бы перемещать друг относитльено друга (гуид то при этом не меняется), а это можно делать ...
#51
by shuhard
1 0,000001 сек - не нано, а микросекунда. 2 Таймер в нс сделать тяжко,ибо это 1Ггц,прерывания утопят ОС. + сиквел захлебнется вводить документы даже с лагом 1 сек в течении долгого времени, не оставив места для масштабирования. 3 В архитектуре системы ошибка: если это биллинг,то надо поток сузить, записывая некие суммы, а не первичку. если это всемирные биржи , то выбор 1С надо обосновывать крэш-тестами.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Запись в Дебет и списание с Кредита счета в рамках одной операции.
- Как перенести данные данные по одной фирме из одной БП в другую
- Запись бух. операции сильно тормозит (запись в регистр бухгалтерии)
- Чем отличается периодичность "По позиции регистратора" от "В пределах секунды"?
- Как удалить запись из журнала документов если "возможно запись была изменена или удалена!"
В этой группе 1С
- Перенос остатков из Бухгалтерии в Комплексную
- v7: Выгрузка в EXCEL
- Как в УПП 1.2 начислять надбавку за стаж работы?
- Как в левом Соединении установить условие
- Как проверить что документ записан в базу в 8.0?
- Загрузка остатков по счетам из Excel
- ТаблицаМФ
- v8: В запросе нельзя использовать функции 1с. Кто как исхитрялся?
- Назначение регистров (УПП)
- Полноэкранный запуск FoxPro
- Создание документа в центральной базе для периферийной
- Сальдо в расчетном листке. Как? Посоветуйте...
- Как работает ЭкземпляровНаСтранице(0)
- Шрифт в нижнем колонтитуле
- Перемещение ТМЦ внутри холдинга
- Пакетная печать документов
- ПриКопировании () - как отказаться?
- Не выгружается КПП в Клиент банк
- Про обработку CVWizard.ert
- Зачем в УТ нужем регистр сведений "Списанные товары"