Имя: Пароль:
1C
 
ГУИД 1С8
0 boulat
 
23.06.08
09:56
После удаления документа ГУИД освобождается или нет?
Произойдет свертка базы, боюсь не появились бы документы с такими же ГУИДами, какие были у старых документов.
1 Immortal
 
23.06.08
09:59
нет
2 Immortal
 
23.06.08
10:00
можешь не бояццо. в пределах одной базы гуид не повторяеццо
3 RomaH
 
naïve
23.06.08
10:00
в поиск
ГУИД вообще НИКОГДА не повторяется (в идеале)
4 boulat
 
23.06.08
10:07
(1),(2),(3) Я тоже так думаю, тем более вероятность повторения у 128 битного числа сами понимаете какая, но у нас в офисе возник спорный вопрос на эту тему, и без обоснования немного не катит. Может кто ссылками поделится?
5 NewNick
 
23.06.08
10:10
(4) стандартный алгоритм генерации гуида привязан к уникальным меткам железа(например мак адрес сетевой) и времени-дате с некислой точностью. если время назад переводить не будете и пытаться попасть в долю секунды когда гуид создавался то новый такой же не сделаете.
6 Immortal
 
23.06.08
10:11
(3) бугага. повторяеццо. и ишшо как. Поищи на форуме, казусы описаны(УРБД в частности)
7 NewNick
 
23.06.08
10:24
(6) хороший способ вести дискусию. типо ищите контраргументы на свой аргументы в поиске сами.
8 Лефмихалыч
 
23.06.08
10:34
>После удаления документа ГУИД освобождается или нет?
гуид состоит из двух частей, первая - уникальная метка момента времени, вторая - уникальная метка места. Как это может освобождаться?
ЗЫ на счет мест "первая" и "вторая" не уверен, т.к. в 1С, кажется все наоборот, не уверен, но смысл от этого не меняется
9 Immortal
 
23.06.08
10:41
(7) прссто не стоит столь категорично утверждать . Тем более что прецеденты уже были.
да и механизм..гг..генерации гуида в 1сv8 недавно ж вроде обсуждали.
т.е. некоторые части гуида уникальные, а некоторые (которые увеличиваюццо на 1 при..  генерации) повторяются.
10 Лефмихалыч
 
23.06.08
10:44
(9) то есть ГУИД 1С - не имеет ни чего общего с http://ru.wikipedia.org/wiki/UUID ?
Офигеть...
11 Лефмихалыч
 
23.06.08
10:44
+(10) ...ни чего общего, кроме внешнего вида
12 H A D G E H O G s
 
23.06.08
10:44
(10) Имеет
13 Immortal
 
23.06.08
10:47
(10) имеет в некоторой части.
14 H A D G E H O G s
 
23.06.08
10:48
Стартовый GUID формируется по (10) потом, при записи новых объектов - инкремент на единицу в поле "Время".
15 Лефмихалыч
 
23.06.08
10:48
(12) внешний вид?
16 Лефмихалыч
 
23.06.08
10:49
(14) а в какой момент формируется стартовый гуид?
17 H A D G E H O G s
 
23.06.08
10:50
ХБЗ, может при старте/или при записи нового элемента справочника.
Дельфей под рукой нету, так бы глянул..
18 H A D G E H O G s
 
23.06.08
10:51
P.S. Сообщить(Строка(ЭлементСправочника.УникальныйИдентификатор()));
выведет не то, что хранится в базе.. Он поменяется местами поля ГУИДа (хз зачем)
19 Лефмихалыч
 
23.06.08
10:52
зачем было такую куйню делать?.. а зачем тогда вообще было ГУИД делать? уму не растяжимо... от ить офощи...
20 Лефмихалыч
 
23.06.08
10:53
(18) на эти грабли я уже с разбегу прыгал, но надеялся, что это единственная причуда
21 H A D G E H O G s
 
23.06.08
10:57
(19)
Менять местами - да не пойму, может перечудили, может какая задумка...
Инкремент - плюсы и минусы есть. плюс - скорость, минус нет возможности точно узнать дату ссылки. (тока дата).
22 NewNick
 
23.06.08
10:59
вроде 1с юзает виндовую функцию CoCreateGUID( ). насколько я помню входных аргументов у нее нет. в таком случае что именно и зачем 1с увеличивает на 1 ?))
23 Лефмихалыч
 
23.06.08
11:03
(22) ты ветку полностью читал?
24 H A D G E H O G s
 
23.06.08
11:04
(22) При начале работы - ГУИД=CoCreateGUID();,
при записи -
НовыйЭлемент.ГУИД=ГУИД;
ГУИД=ГУИД+1; // в плане времени. (Согласитесь, так быстрее, чем еще раз CoCreateGUID()) ?
25 NewNick
 
23.06.08
11:06
(23) вопрос к теме генерации гуида имеет отношение? ) читал. а в чем причина беспокойства ?
26 NewNick
 
23.06.08
11:07
(24) фигня.
27 Лефмихалыч
 
23.06.08
11:07
(24) быстрее, но зато (6)... какая-то глупая и нижнеполушарная логика...
ЗЫ Оценка умственных способностей дана "разрабоччегам" 1С, а не автору (24) {шоб понятно было}
28 H A D G E H O G s
 
23.06.08
11:07
(26) Ваша версия?
29 Лефмихалыч
 
23.06.08
11:08
(26) была б фигня, не повторялись бы они до 3036 года
30 NewNick
 
23.06.08
11:08
(24)
Сообщить(Новый УникальныйИдентификатор());
Сообщить(Новый УникальныйИдентификатор());

Дает
4ff44eaa-c3c4-4ac7-8eb6-b55db94ffed4
9dedefa5-f49c-4956-9be1-f387289e5db6
31 Лефмихалыч
 
23.06.08
11:09
(30) и чо? кто сказал, что для создания ГУИДа нового объекта то же алгоритм?
32 H A D G E H O G s
 
23.06.08
11:09
(30) Садись, пять..
33 NewNick
 
23.06.08
11:10
(29) это в рамках 1с они повторятся ?)) они рискуют повторится в рамках общего алгоритма. который использует время.
34 Лефмихалыч
 
23.06.08
11:11
(33) еще раз - ветку всю читал?
35 NewNick
 
23.06.08
11:13
(31) проверь. я проверял. кроме того довольно забавно использовать 2 алгоритма для генерации гуида и кроме того опасно с учетом того что у пользователя есть возможность назначить свой гуид. а типовой для дока и генерация гуида как объекта оказывается играют по разным алгоритмам. вот тут как раз можно и нарваться на неуникальность. здравый смысл.
36 NewNick
 
23.06.08
11:15
(34)->(25)
37 Лефмихалыч
 
23.06.08
11:17
(35) о том и ветка, что "вот тут как раз можно и нарваться на неуникальность", но гения из 1С со здравым смыслом по факту не дружат, либо они на столько гения, что логика у них квантовая и простым смертным не понятна
38 H A D G E H O G s
 
23.06.08
11:21
(35)Да, херня неприятная, смотрим:
   СписокСсылок=Новый СписокЗначений;
   Объект=Справочники.Склады.СоздатьЭлемент();
   Объект.УстановитьСсылкуНового(Справочники.Склады.ПолучитьСсылку(Новый УникальныйИдентификатор()));
   Объект.Записать();
   СписокСсылок.Добавить(Объект.Ссылка);
   Объект=Справочники.Склады.СоздатьЭлемент();
   Объект.Записать();
   СписокСсылок.Добавить(Объект.Ссылка);
   Для Каждого Элемент ИЗ СписокСсылок цикл
       Сообщить(Элемент.Значение.УникальныйИдентификатор());
   КонецЦикла;
39 H A D G E H O G s
 
23.06.08
11:22
И пару раз это выполнить :-)
40 NewNick
 
23.06.08
11:23
прикольно. беру свои слова обратно.
41 NewNick
 
23.06.08
11:23
Док1 = Документы.ABCКлассификацияПокупателей.СоздатьДокумент();
Док1.Дата = ТекущаяДата();
Док2 = Документы.ABCКлассификацияПокупателей.СоздатьДокумент();
Док2.Дата = ТекущаяДата();
Док1.Записать();
Док2.Записать();
сообщить(Док1.Ссылка.УникальныйИдентификатор());
сообщить(Док2.Ссылка.УникальныйИдентификатор());
42 NewNick
 
23.06.08
11:23
472f0b13-4079-11dd-a992-0013d3ae4805
472f0b14-4079-11dd-a992-0013d3ae4805
43 H A D G E H O G s
 
23.06.08
11:25
(40) Я не об этом..
Вот здесь и может быть неуникальность. Тока навряд ли.. так повезет.
44 NewNick
 
23.06.08
11:25
звиздец. это выше моего понимания как и то как сравнивается момент времени привязанный кстати к гуидам.
45 Лефмихалыч
 
23.06.08
11:28
(44) то-то и оно, шо не понятно, как оно вообще работает...
46 NewNick
 
23.06.08
11:35
(29)
http://cppclub.newmail.ru/articles/insidecom09.html

Эта функция выполняет специфицированный OSF DCE алгоритм, который использует комбинацию следующей информации для генерации GUID:

текущие время и дату – 60 бит
глобальный уникальный идентификатор машины, получаемый от сетевой карты (а при ее отсутствии синтезируемый из изменяющихся машинных состояний) – 48-битное значение
и т.п.
Шанс генерации двух одинаковых GUIDs ничтожно мал. Подсчитано, что используемый сейчас алгоритм генерации GUID начнет выдавать повторяющиеся значения в 3400 году.
47 NewNick
 
23.06.08
11:36
Повторяемость гуида после 3400 года это к общему алгоритму, вызвано походу тем что переполнится 60 бит выделеных под текущее время и дату.
2 + 2 = 3.9999999999999999999999999999999...