Имя: Пароль:
1C
1С v8
Уникальность идентификаторов гарантируется только в рамках одной таблицы?
,
0 Лунтик
 
17.08.18
16:27
Может сейчас ситуация уже другая и уникальность соблюдается в рамках всей базы?
Где это описано в ИТС или документации? Киньте, пожалуйста, ссылки или ориентиры.
1 Casey1984
 
17.08.18
16:31
У меня в закладках цитата: Характерной особенностью объектного манипулирования данными является то, что на каждый объект, как совокупность данных, существует уникальная ссылка, позволяющая однозначно идентифицировать этот объект в базе данных.
2 Casey1984
 
17.08.18
16:32
(1) Не помню откуда скопировал) откуда-то с 1с)
3 Casey1984
 
17.08.18
16:33
(1) Отсюда я всегда считал, что в пределах база. Но так как это GUID то по идее гораздо шире.
4 Cool_Profi
 
17.08.18
16:34
ГУИД определяется как Глобально Уникальный Идентификатор
Вероятнось совпадения теоритечиски очень-очень-очень маловероятны
5 Tonik992
 
17.08.18
16:37
(0) вероятно, ситуация была очень и очень спорной с последовательностью.. Где-то читал, что в пределах одной таблицы по одной и той же дате может наблюдаться разная последовательность документов.
6 Fragster
 
гуру
17.08.18
16:37
Уникальность идентификаторов гарантируется только в пределах одной таблицы, это следует из структуры индексов и наличия УстановитьСсылкуНового с заранее определенным идентификатором

(1) а теперь посмотри на структуру полей составного типа в БД

(3)(4) а GUID тут не причем, в слове УникальныйИдентификатор нет буквы Г(лобальный)
7 vdss
 
17.08.18
16:40
(6) +1

Уникальность ГУИД соблюдается в пределах таблицы

Это легко проверить - создай два элемента разных справочников с одним и тем же ГУИДом
8 Cyberhawk
 
17.08.18
16:40
В 1С не ГУИДы, а УИДы. Когда-то Я тоже говорил неправильно (с "Г")
9 Eiffil123
 
17.08.18
16:45
Платформой гарантируется в пределах таблицы.
При этом при автоматической генерации новых ссылок (если туда не влезает программист) совпадение идентификаторов в разных таблицах маловероятно.
10 Eiffil123
 
17.08.18
16:47
(1) Это верно. Но здесь имеется ввиду ссылка на объект, а это комбинация Тип (что соответсвует таблице БД) + Идентификатор
11 Casey1984
 
17.08.18
16:51
(6) из описания УстановитьСсылкуНового:

Устанавливает значение для нового (созданного и еще не записанного) объекта, которое будет назначено при записи в качестве ссылки. Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа. Уникальность ссылки проверяется при записи объекта.

Согласен.
12 Лунтик
 
17.08.18
17:03
И, все-таки, вопрос освещен в документации или нет?
13 Fragster
 
гуру
17.08.18
17:05
(12) Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа
14 Fragster
 
гуру
17.08.18
17:06
не может ... данного типа
15 Лунтик
 
17.08.18
17:10
(13) как раз объекты РАЗНЫХ типов надо сливать в ОДНУ таблицу на стороне. Получается, по идентификатору это делать нельзя. Чем обосновать-то?
16 Casey1984
 
17.08.18
17:10
В 1С: Предприятие 8.3 Практическое пособие разработчика например :-)

Но (6) (8)! В описании объекта УникальныйИдентификатор в справке платформы:

Предназначен для создания и хранения глобального уникального идентификатора GUID.

Вот и верь печатному слову.
17 Fragster
 
гуру
17.08.18
17:12
(15) вероятность крайне мала. сначала проверь, может у тебя не пересекаются они.
18 Вафель
 
17.08.18
17:15
(15) можешь гуиды не сливать, а делать например запись в регистре соотвествие элементов баз данных или что-то типо такого
19 Franchiser
 
гуру
17.08.18
17:15
в 1с 7.7 уникальные идентификаторы (т.к. они все в _1sjourn), в 1с8 нет. Можешь сам проверить: взять УИД и создать новый документ другого типа с таким же УИД.
20 D_E_S_131
 
17.08.18
17:15
"сливать в ОДНУ таблицу на стороне" - зачем "сливать" УИД?
21 Вафель
 
17.08.18
17:16
но лучше по гуидам, па потом проверить отчетом. все равно отчет по проверке нужно делать
22 Вафель
 
17.08.18
17:16
(20) а если нужно перелить повторно?
23 Лунтик
 
17.08.18
17:21
(21) так пока и получается. На каждую строку ряда документов создавать, наверное, справочник, чтобы по-нему строить уникальный идентификатор. Ничего себе размерчик справочника получается!!!
24 Fragster
 
гуру
17.08.18
17:21
в типовых на БСП уже есть такой регистр сведений под это дело. Причем при работе через КД2 и КД3 там все само заполняется
25 Fragster
 
гуру
17.08.18
17:22
естественно, если пользоваться типовым обменом по правилам
26 Вафель
 
17.08.18
17:23
(24) но в типовых вроде гиуды по умолчанию сохраняются.
а регистр нужен для случаев сопоставления
27 Fragster
 
гуру
17.08.18
17:24
(26) ну там не только гуид, но и тип объекта-источника сохраняется
28 Лунтик
 
17.08.18
17:26
как раз из-за типового РС.ИдентификаторыОбмена и сыр-бор.
Там одно измерение Объект (ссылка на прикладной объект) и один реквизит Идентификатор (36 символов). Не хватает длины идентификатора или идентификатора типа/базы/др
29 Лунтик
 
17.08.18
17:28
Офигеть!! а в УТ, реально, есть ТипПриемника, ТипИсточника и др!!!
30 Лунтик
 
17.08.18
17:30
Axelot отстой!!
31 Fragster
 
гуру
17.08.18
17:31
в старой БСП было меньше измерений :)
32 Лунтик
 
17.08.18
17:36
Теперь совсем-совсем нужна ссылка на документацию!! Как без этого бодаться с акселотом-то!!!
33 Casey1984
 
17.08.18
18:05
(32) не совсем документация, но: https://its.1c.ru/db/pubdevguide83#content:285:1
34 Eiffil123
 
17.08.18
18:06
(15) сначала проверить надо, может сейчас пересечений по ГУИДам нет. В случае одноразовой выгрузки тогда проблем нет. А если многоразовая - тогда к строковому идентификатору можно добавлять первую букву справочника для уникальности.
35 Cyberhawk
 
17.08.18
18:14
(29) Это сделано в частности для передачи удалений объектов, а не для того, о чем ты думаешь
36 Cyberhawk
 
17.08.18
18:15
А что там Акселот, шинку данных вам пилит?
37 Cyberhawk
 
17.08.18
18:27
(16) Ну, на ИТС тоже много где используется "GUID" как синоним "уникального идентификатора"
38 Cyberhawk
 
17.08.18
18:30
Ну и в одата-интерфейсе тип для ссылок имеет в своем названии "Guid".
А по сути где первоисточник?
39 Вафель
 
17.08.18
18:45
(38) в с++ тоже гуид называется
40 Cyberhawk
 
17.08.18
19:07
В RFC тоже синонимы: https://tools.ietf.org/html/rfc4122
"This specification defines a Uniform Resource Name namespace for
   UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally
   Unique IDentifier)"
А что может быть "первоисточнее"?
41 Garykom
 
гуру
17.08.18
21:44
1. Уникальность только в одной таблице
2. На практике было 1 совпадение УИД на 2 миллиона записей (документов) создаваемых в разных базах.
42 hhhh
 
18.08.18
07:52
(41) ну это в теории. а если на практике? например, если правила обмена, там гуид копируется в другую базу. Если например в бп один справочник Контрагенты. А в Ут два справочника Контрагенты и Партнеры. То легко можно накосячить в правилах, чтобы в справнике Контрагенты и Справочнике Партнеры ГУИД был одинаковый.
43 rphosts
 
18.08.18
08:05
(0) ссылка на объект содержит в себе: Вид(тип) объекта и Уникальный код среди этого вида (в пределах этой ИБ)
44 spectre1978
 
18.08.18
08:34
(40) Насколько я понимаю, суть оно одно и то же - 128-битное целое. Это очень много значений и теоретически глобальная уникальность достижима. Но весь вопрос в механизме генерации. Уникальность достигается в том случае, если этот механизм достаточно качественно сделан. Если не очень, то дубли возможны.
45 Garykom
 
гуру
18.08.18
09:57
(42) Если у тебя Контрагенты+Партнеры >2 лямов то вот примерно 1 совпадение и будет и то возможно.
А возможно и не будет совпадений УИД, все зависит от времени занесения/создания новых записей.

В моем случае было около 180 мест (баз) одновременного занесения, если места всего 2 то вероятность совпадений снижается очень сильно, УИД он включает в себе текущие дату+время.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn