Имя: Пароль:
1C
1С v8
UUID (ГУИДы)
0 _Дайвер_
 
24.08.17
11:12
Доброго времени суток друзья!

Встал вопрос касательно ГУИДов в системе 1С, расскажите пожалуйста подробнее на основании каких данных он формируется?
1 Ёпрст
 
24.08.17
11:13
нажми на "Я" справа вверху.
2 Волшебник
 
модератор
24.08.17
11:13
зачем тебе?
3 _Дайвер_
 
24.08.17
11:21
(1) Искал, не могу найти на основании каких данных он формируется, Дата + Время + Код + еще что то там. (2) Возник вопрос, если в 2-х базах, будет идентичные объекты, гуид совпадет или нет. Может он просто как код формируется типа сначало 0000001 потом 0000002 и т.д.
4 arsik
 
гуру
24.08.17
11:23
(3) нет
5 aleks_default
 
24.08.17
11:23
"Искал, не могу найти" - возьми на полке такую толстую книжку
6 Волшебник
 
модератор
24.08.17
11:23
(3) Не совпадёт.
7 SSSSS_AAAAA
 
24.08.17
11:24
(3) Объекты, созданные в разных базах, будут иметь разные идентификаторы даже если все остальное в них будет абсолютно одинаковым.
8 Ёпрст
 
24.08.17
11:24
(4,6) совпадает.
Пример есть
:)
9 Вафель
 
24.08.17
11:24
Даже не мисте этот вопрос раз 100 обсуждался
10 _Дайвер_
 
24.08.17
11:26
Есть какая нибудь литература касательно ГУИДов в 1С? Отдельная статья)
11 Ёпрст
 
24.08.17
11:27
если вторая база была получена путём клонирования первой, то с большой долей вероятности в ней будут объекты одного типа с одинаковой ссылкой.
12 _Дайвер_
 
24.08.17
11:27
(7) Вопрос, на основании чего он разный получится?)
13 Волшебник
 
модератор
24.08.17
11:28
(11) Да, это вполне реально.
14 dezss
 
24.08.17
11:31
15 Ёпрст
 
24.08.17
11:31
+11 я на это нарвался, при переносе в общую базу, когда объеты одной базы "перетёрли" объекты другой базы при сонхронизации по внутреннему идентификатору. Базы создавались лет 5 назад из одной общей.
Пришлось делать синхронизацию по полям поиска.
:(
16 SSSSS_AAAAA
 
24.08.17
11:35
(12) На основании алгоритма его расчета.
17 h-sp
 
24.08.17
11:36
да, тоже постоянно сталкиваюсь например слить две базы с разными организациями, при переносе 2 организации сливаются в одну.
18 _Дайвер_
 
24.08.17
11:37
может такое произойти что в разных базах создались 2 идентичных гуида, и скажем при переносе они встретятся (16) Алгоритм и интересует)
19 _Дайвер_
 
24.08.17
11:41
Спасибо(14), H A D G E H O G Описал кстати в v8: Где взять описание GUID, который в 1С 8?
GUID - ссылка - это тупо 16 байт.
Формируется по особому алгоритму, гарантирующему уникальность вновь созданных
ПРЕДСТАВЛЯЕТСЯ обычно в виде:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,
где
X - представлем в шестнадцетиричном видею

Важно!

GUID 1С-а представленный в 1С, например
Сообщить(Строка(Ссылка.УникальныйИдентификатор()));
отличается от фактически хранимого в базе на некоторые перемешанные значения
Например, в 1С он выглядит как
6F9619FF-8B86-D011-B42D-00CF4FC964FF
В базе (фактически) он имеет значение:
6F9619FF-D011-8B86-B42D-00CF4FC964FF
(Это тупо пример, там алгоритм перестановки другой, лень споминать)

Важно!

GUID 1С формирует не по правилам Microsoft, а инкрементно.
В начале сеанса формируется стартовый GUID, r примеру
6F9619FF-8B86-D011-B42D-00CF4FC964F0

У каждого последующего, созданного в этом сеансе ссылочного объекта GUID будет на 1 больше, к примеру:
6F9619FF-8B86-D011-B42D-00CF4FC964F1
6F9619FF-8B86-D011-B42D-00CF4FC964F1
6F9619FF-8B86-D011-B42D-00CF4FC964F1
20 SSSSS_AAAAA
 
24.08.17
11:42
(18) В разных базах не могут создасться одинаковые идентификаторы.
21 Вафель
 
24.08.17
11:42
Инкрементный гуид - это тоже по правилам, назывется
SequentialUUID
22 _Дайвер_
 
24.08.17
11:50
(20) Почему? Их хоть и МНОГО(2 в 128 степени), но вероятность есть)
23 H A D G E H O G s
 
24.08.17
11:53
Все рассуждения о дублях ГУИД - это городские байки, к которым пока никто не привел фактов; при этом, на 100% я уверен, что дубли ГУИД будут вызваны какими-нибудь обменами.
24 H A D G E H O G s
 
24.08.17
11:55
MRStormak, кстати, раскрыл загадку переставления значений GUID - для большей монотонности значений кластерного ключа.
25 H A D G E H O G s
 
24.08.17
11:55
Гдето была ветка.
26 Вафель
 
24.08.17
11:56
(24) так это давно было известно, SeqUUID все-таки не 1с придумала
27 H A D G E H O G s
 
24.08.17
11:58
(26) Не знал. Думал - Российское ноухау.
28 Вафель
 
24.08.17
11:59
Даже в АПИ венды есть функция
29 _Дайвер_
 
24.08.17
12:01
(23) Если судить в пределах 1-й конфигурации, да(байки 100%), а если при обменах, то такое поведение не исключено, а если БД-х создались из 1-й, то вероятность увеличится, правильно?)
30 Вафель
 
24.08.17
12:03
Тут вопрос: как следующий генерится. В какой момент генерируется ключевой 0 элемент.
Ну в серверной вроде при старте сервера,а в файле?
31 SSSSS_AAAAA
 
24.08.17
12:06
(29) Нет, не правильно. Научитесь таки различать СОЗДАНИЕ и ХРАНЕНИЕ. Дублирование есть результат не СОЗДАНИЯ, а обменов/передач/копирований и т.д.
32 _Дайвер_
 
24.08.17
12:41
(31) Я ведь тоже самое спросил, только своими словами: "Если судить в пределах 1-й конфигурации" - НЕТУ ОБМЕНОВ, "а если при обменах, то такое поведение не исключено, И если БД-х создались из 1-й" ОБМЕНЫ\ПЕРЕДАЧИ\КОПИРОВАНИЯ
33 Torquader
 
27.08.17
00:33
Значит так.
Алгоритм генерации УИД-ов старается, чтобы они были уникальными, но внутри алгоритма используются параметры машины, такие как MAC-адрес и другие уникальные данные компьютера.
Но, если кто-то уникальные данные подправит так, что на двух компьютерах они будут абсолютно одинаковыми, то есть вероятность получить два одинаковых УИД-а.
34 Garykom
 
гуру
27.08.17
00:44
(33) От MAC-адресов MS отказался, поэтому встает веселая трабла когда на клонированной винде в копии базы легко получить одинаковые гуиды в одно время если генерировать их в одно время.
35 Garykom
 
гуру
27.08.17
00:48
(34)+ К примеру на 100 клонированных компах в одной РИБ базе 1С 8.1 на ~2 миллиона объектов (уникальных уид) смогли получить 1 совпадение.
Хотя специально не старались, просто купили кучу системников для автоматизации аптек, админы банально наклонировали винду (даже без смены лицензионных ключей), туда воткнули РИБ базы и отправили по филиалам.

Затем при работе через полгода получили 1 совпадение - документ сначала был, а потом перезатерся другим (совсем другая аптека) при штатном обмене.
36 Torquader
 
27.08.17
00:58
(35) Если бы использовались непоследовательные ИД, то совпадений было бы меньше.
37 Garykom
 
гуру
27.08.17
01:02
(36) Да просто желательно знать тонкости работы железа/софта и предусматривать это в своих решениях.

Не обязательно делать кста предотвращение дублей, можно и систему обнаружения и исправления трабл, что и было потом сделано.
38 Mikhail Volkov
 
27.08.17
05:20
(12) Дык, это сверх секретная информация. Билл Гейтс создал его как некий ИНН масштаба вселенной, и даже не какой-то личности, а любого эл. документа, поскольку в GUID вшивается мак-адрес сетевой карты компа, на котором создан эл. документ. Так-что все мы "под колпаком Мюллера". После конечно объявили, что GUID - нарушение прав человека, и он просто случайное 32 разрядное 16-ное число для 1С-ников.
39 Tateossian
 
27.08.17
15:45
40 Tateossian
 
27.08.17
15:46
(35) Наверное поиск этого бага был весьма трудным) Мол, куда делся документ?
41 Garykom
 
гуру
27.08.17
16:44
(40) Неа, там повезло что на основании этих доков делались "реестры рецептов", куда и ссылка на исходный документ и скопированы данные из реквизитов документа.

Система предназначенная для контроля изменения документов (уже отправленных на оплату) задним числом сработала штатно.
42 craxx
 
27.08.17
17:29
(0) я в 7.7 их формировал как MD5-хэш от ЗначениеВСтрокуВнутр()
43 Фигня
 
27.08.17
17:50
на клонированных базах неоднократно встречался с дублированием для разных объектов. Например в периферийных. В разных базах, даже из одной конфигурации, даже при переносе данных ни разу не сталкивался.
44 Живой Ископаемый
 
27.08.17
22:03
Чуваки, 2к17 на дворе.... Хорош муйню давно переваренную перетирать
45 Mikhail Volkov
 
28.08.17
04:37
Разве может повториться случайное 32 разрядное 16-ное число? Только чисто теоретически.
Закон Брукера: Даже маленькая практика стоит большой теории.