Имя: Пароль:
1C
1С v8
По какому алгоритму формируется GUID или что можно использовать вместо него?
0 ИС-2
 
naïve
25.07.13
15:39
Для привязки документов нужен какой-то уникальный идентификатор.
Номер и дата не подходят т.к меняются. Весь UID использовать не получается - сторонная прога не поддерживает такаю длину.

Как его можно образать, так чтобы сохранить уникальность? Или что можно использовать как уникальный идентификатор?
1 Кирпич
 
25.07.13
15:46
ну смотря какая длина
2 George Wheels
 
25.07.13
15:48
MD5 UID
3 МихаилМ
 
25.07.13
15:48
(0)
сколько байт размер поля идентификатора ?
4 Aleksey
 
25.07.13
15:48
Так а длина какая? Может просто "-" убрать?
5 Gepard
 
25.07.13
15:49
я делал отдельную табличку со стандартным нумератором postgre и отдельным полем под гуид. инсертится гуид, получается число
6 Русмус
 
25.07.13
15:51
GIUD - это число в 16-ричной системе счисления.
Преобразуй в 32-ричную систему - вдвое сократится длина, сохранив уникальность.
7 ИС-2
 
naïve
25.07.13
16:00
(5) можно более подробно?
(6) Пользователи повесятся диктовать уникальный идентификатор

Можно, конечно, сделать свой реквзит-нумератор. Но охото более стартными средствами
8 vladon
 
25.07.13
16:00
(2)

> MD5 UID

Из 128 бит получить 128 бит? ))
9 МихаилМ
 
25.07.13
16:01
(6)
16-ричной - представление

GIUD - 16 байт. представляйте в любой системе счисления  
останутся те же 16 байт
10 Serginio1
 
25.07.13
16:04
wiki:%D2%E0%E1%EB%E8%F6%E0_%F0%E0%E7%E4%E5%EB%EE%E2_GUID

Но вот в 1С автоматически просто увеличиваются на 1 ку.
v8: ГУИД 1С8

Уникальным будет если самостоятельно прописывашь через
УстановитьСсылкуНового(Новый УникальныйИдентификатор())
11 vladon
 
25.07.13
16:04
Вот отсюда выберите любой алгоритм хеширования: http://en.wikipedia.org/wiki/List_of_checksum_algorithms
12 vladon
 
25.07.13
16:08
(5) "я делал отдельную табличку со стандартным нумератором postgre и отдельным полем под гуид. инсертится гуид, получается число"

а вот это вообще неправильно, уникальность негарантирована.

вы генерируете псевдоуникальный номер для истинно уникального, ржака конечно.
13 rs_trade
 
25.07.13
16:22
размер поля какой в сторонней проге? интеджер небось какой нить
14 ИС-2
 
naïve
25.07.13
16:32
(13) строка 15
15 acsent
 
25.07.13
16:35
сделать регитстр. Число - ссылка
16 МихаилМ
 
25.07.13
16:36
(14)
если 15 байт - то копируйте первые 15 байт из 16.
17 Serginio1
 
25.07.13
16:38
(14) По любому не уложишься, так как 60 бит идет на время а 40 идет на карту, так как GUID может создаваться на разных машинах.Проще сделать регистр для соответствия ссылок какому нибудь ИД тип Автоинкремента. При передаче  делать левое соединение и если Для такой ссылки добавлять в этот регистр значение max(ID)+1
18 Serginio1
 
25.07.13
16:40
Кстати незнаю как сейчас но раньше были проблемы с УИД v8: Вхождение в список УникальногоИдентификатора ошибка
19 Лефмихалыч
 
модератор
25.07.13
16:45
(0) не менять номер не предлагать?
20 ИС-2
 
naïve
25.07.13
16:46
(19) нет
21 Лефмихалыч
 
модератор
25.07.13
16:48
(20) почему?
22 Gepard
 
25.07.13
16:54
(12) уникальность в системе остается (там GUID), да и в пределах этой таблицы тоже остается. Если внешняя система не может ничего съесть нечисловое, хэши не выход. Тут 100% уникальность в пределах таблицы.
23 Ненавижу 1С
 
гуру
25.07.13
16:57
это шож за программа такая? что только 15 символов в строке?
24 Кирпич
 
25.07.13
17:07
(0)да записывал бы время и все дела. что нибудь типа имя компьютера + датавремя. а уж насколько это у вас там уникально будет, смотри сам.
ну или тупо счетчик.
25 Фауст
 
25.07.13
17:21
Делаешь реквизит у документа, тип - "справочник ссылка", При записи документа создаешь элемент справочника и присваиваешь его реквизиту документа. Получится на каждый документ будет 1 уникальный связанный с ним элемент справочника. По коду справочника будешь искать документ
26 Gepard
 
25.07.13
17:32
(25) имхо, лучше в справочнике индексированное поле Документ.Ссылка, что бы сам документ не трогать, а справочник записывать через подписку
27 Рэйв
 
25.07.13
17:35
УИД= Новый УникальныйИдентификатор
28 Рэйв
 
25.07.13
17:35
все уже решено до нас
29 Gepard
 
25.07.13
17:50
(28) внимательно читаем (14)
30 fisher
 
25.07.13
17:58
(14) Если без потерь, то как уже предлагали - преобразовывай гуид к 32-ричке. В таком формате уиды в 7-ке хранились. Алгоритмы можешь найти готовые в семерочных ветках.
31 fisher
 
25.07.13
18:01
А, чёрт. 32-рички мало. Придется чуток плотнее.
32 fisher
 
25.07.13
18:17
Чета я затупил. Если строка не юникод, то не получится туда гуид впихнуть в 15 символов :)
Только резать.
33 mistеr
 
25.07.13
18:55
(7) Нумератор - самое что ни на есть стандартное средство.
34 Мыш
 
26.07.13
12:07
Можно в любую систему счисления перевести, не только 32. Лишь бы символов хватало. Но ТС упомянул, что пользователи должны читать результат и диктовать друг-другу. Несовместимые требования у него. )