Имя: Пароль:
IT
 
GUID и вычисление(восстановление) даты из него
0 Lendy
 
26.10.07
13:05
Как я понимаю, GUID генерится исходя из времени, даты и некоторой случайности. Можно ли из GUID вычислить дату его генерации (фактически дату создания объекта)? Способ для 8 байтного нашел, а для 16 нет. Лог не поможет, т.к. сломался.
1 GrayT
 
26.10.07
13:20
Может поможет.... http://ssy.mccinet.ru/guid.html
2 Lendy
 
26.10.07
13:42
(1) спасибо, буду искать в acсess, но в 1С может быть другой метод.
3 Hadgehogs
 
26.10.07
13:54
//Берем в 1С GUID как строку, отправляем в ВК, там GetGUIDFromString(), 8 (не левых, а хитро взятых) байт через CopyMemory() в переменную TDateTime. Не претендую на истину, Дельфей под рукой нету, могу дома попробовать. Важно! GUID в 1С хранится не так, как представляется. Там пары байт перемешаны почему - то.
4 Hadgehogs
 
26.10.07
13:55
+ дома буду часа через два, попробовать?
5 Lendy
 
26.10.07
14:23
(4) если можно. Я долго буду с ВК разбираться )) Если получится - буду пробовать.
6 Lendy
 
26.10.07
15:25
http://partners.v8.1c.ru/forums/thread.asp?forum=186&id=521906 ветка на партнерском форуме.
7 Hadgehogs
 
26.10.07
15:59
В ветку попасть не могу.
Нету в GUID даты, нету. В 1C ом GUID нету.
Создайте новую конфу.
Создайте в ней справочник.
Заведите в справочнике пару элементов.
Выведите их "GUID"
Выйдите из 1С.
зайдите в 1С
создайте 1 элемент
покурите
создайт 2 ой элемент
Выведите 'GUiD'ы
Сожалею..
Однако продолжу опытки извлечь дату из настоящего GUID в Delphi
8 Hadgehogs
 
26.10.07
16:04
(6)А че там, в ветке то?
9 Lendy
 
26.10.07
16:18
(8) пока ничего определенного. Советуют не пользоваться. От 1С ответа нет. По идее МАС адрес сетевой карты тоже должен быть в гуиде. Обычно это последние 8 байт. Но в 1С это не так.
10 Hadgehogs
 
26.10.07
16:33
Пока ощущение такое, что при начале работы генерится GUID, а затем при создании объектов идет его инкременация на единицу. Так как 1C не может генерить объекты быстрее, чем несколько наносекунд (см .http://ssy.mccinet.ru/guid.html), то инкременация отстает от реального GUID-ного времени. При новой загрузке 1С все повторяет.
Это только теория
11 Lendy
 
26.10.07
16:37
(10) Если даже так, то тоже хорошо. Можно понять в какой день (сессии больше дня обычно не висят) был создан объект.
12 Hadgehogs
 
26.10.07
16:39
В принципе можно устанавливать свои "настоящие" GUID через
УстановитьСсылкуНового() в  ПередЗаписью()
13 Hadgehogs
 
26.10.07
16:41
Пошел короче GUID потрошить
14 Hadgehogs
 
26.10.07
16:56
(1)
Наносекунда = 10e-9 секунд.
Чтобы "зацепить" эту наносекунду частота процессора должна быть
1/10e-9 ГЦ = 1ГГЦ.
Что это? Это я на своем старом Duron 750 МГЦ р\нормальные GUID-ы не смогу получать.
А - кошмар, я понял, почему на нем 1С тормозит. Ждет, пока GUID получить сможет :-)
Как страшно жить...
15 Lendy
 
26.10.07
22:13
Re: Вопрос по GUID и вычислению даты из него        
сегодня 21:27
Нуралиев Сергей (1С, Москва)
522194

Сама по себе задача не является правильной.

Уникальный идентификатор может быть и не сгенерирован при создании объекта, а взят из другой информационной системы. Не стоит его пытаться использовать в каком-либо качестве, кроме того, для которого он предназначен.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший