|
Из чего состоит уникальный идентификатор? | ☑ | ||
---|---|---|---|---|
0
1Сергей
25.01.16
✎
12:35
|
348a0be9-7ee7-11e5-80ba-00155d1e0800
Первая часть, как мне кажется, уникальна во всей базе. Нет? Третья похожа на дату или код сеанса. Подскажите, плз |
|||
86
bolobol
25.01.16
✎
13:52
|
(84) Не понял вашу аллегорию про Почту России... Про неё, родимую, знаю, например, девиз: "Письмо должно быть долгожданным!".
А рассказ-то о применённом алгоритме будет? |
|||
87
Живой Ископаемый
25.01.16
✎
13:52
|
Ок, 26 и 36
|
|||
88
Aceforg
25.01.16
✎
13:54
|
(0)
ГУИД = Новый УникальныйИдентификатор(); Строка = СтрЗаменить(Base64Значение(ГУИД)," ",""); 12 символов, и не надо ничего кодировать |
|||
89
Drac0
25.01.16
✎
13:54
|
(85) Ограничение на количество бит и на количество символов, блин, разные вещи.
|
|||
90
Живой Ископаемый
25.01.16
✎
13:55
|
2(88) тоже годнота
|
|||
91
kolts23381
25.01.16
✎
13:55
|
Тоже задавался вопросом а уникален ли ууид в пределах базы. Хотя вероятность повторения ничтожно мала. В пользу уникальности говорит наличие составных типов данных.
|
|||
92
Живой Ископаемый
25.01.16
✎
14:00
|
2(91) э... Еще раз, сгенери объект, создай два объекта двух разных типов, присвой обоим в качестве ссылки нового этот уид. Запиши оба объекта. Они запишутся.
Создай 2 другой объект или запись регистра, в котором реквизит будет составного типа. и установи в качестве значения ссылки на первые два объекта. Тоже запишутся. |
|||
93
Drac0
25.01.16
✎
14:01
|
(88) только гуид надо к двочным данным преобразовать же.
|
|||
94
Живой Ископаемый
25.01.16
✎
14:01
|
2(93) почему?
http://screencast.com/t/Sgd4Zq2T0dtK |
|||
95
1Сергей
25.01.16
✎
14:03
|
(88) классно
|
|||
96
xxTANATORxx
25.01.16
✎
14:05
|
(72)на первый уид накинь ксором второй, на результат скором третий уид
|
|||
97
PR третий
25.01.16
✎
14:07
|
(86) Причем здесь аллегории?
Я говорю, для Почты России сделал ГУИд в 13 символов для печати штрихкода. Алгоритм следующий. Убираем из ГУИДА тире и перекодируем строку с использованием 94 символов вместо 16. 94 символа — это все возможные символы для штрихкода. |
|||
98
kolts23381
25.01.16
✎
14:08
|
(92) А что будет если присвоить этому реквизиту ссылку на один из созданных объектов? Значит помимо ссылки хранится и тип данных? Лень проверять :)
|
|||
99
PR третий
25.01.16
✎
14:10
|
(98) Давно ли у нас можно присваивать ссылки указанием ГУИДа, без указания типа при создании ссылки по ГУИДу?
|
|||
100
Lama12
25.01.16
✎
14:10
|
Было уже или нет?
1С генерит новый гуид в начале сеанса. Далее при добавлении объекта к гуиду добавляется 1. Это то, что помню с давних пор. Возможно сейчас что-то поменяли, но вряд ли. |
|||
101
Drac0
25.01.16
✎
14:10
|
(94) а, ты из строки двоичные получаешь. Забавно )
|
|||
102
forforumandspam
25.01.16
✎
14:16
|
(88) Выполни обратное преобразование.
|
|||
103
kolts23381
25.01.16
✎
14:17
|
(99) Дело не в этом. А в том, как допустим запрос вытащит нужные данные. Запрос знает что здесь сидит составной тип данных и ищет нужную ссылку соединяя таблицы с возможными типами(читал что составные типы данных замедляют запрос, собственно почему если запрос знает какой тип данных там сидит) . А если у разных типов одинаковые ууиды(а это по сути и есть ссылка) то что будет?
|
|||
104
Живой Ископаемый
25.01.16
✎
14:20
|
2(98), да, именно там ссылка по сути из двух уидов разделенных двоеточием
|
|||
105
forforumandspam
25.01.16
✎
14:20
|
||||
106
Живой Ископаемый
25.01.16
✎
14:21
|
uid таблицы : uid объекта
|
|||
107
PR третий
25.01.16
✎
14:22
|
(103) А почему ты думаешь, что тип хранится в ГУИДе?
|
|||
108
Живой Ископаемый
25.01.16
✎
14:23
|
(105) то есть из строки uid нужно бурать тире? логично
|
|||
109
kolts23381
25.01.16
✎
14:27
|
(107) Я так не думаю и уверен что это не так. Я думал что программа, встречая составной тип данных, просто ищет подходящий ууид у всех возможных вариантов(типов входящих в составной).
Вот встречал в нескольких местах что то подобное: " Ваша проблема вот здесь. В СУБД будет выполнен запрос, в котором будут сделаны соединения ко всем объектам, входящим в тип реквизита Объект, а их может быть оооооочень много. Поэтому и СУБД будет это переваривать оооооочень долго. Это можно обойти, если вы знаете заранее, какой конкретно объект вам надо отфильтровать по владельцу (договоры, например)." Зачем делать соединения ко всем типам если мы заранее знаем тип? Или все таки не знам? |
|||
110
kolts23381
25.01.16
✎
14:28
|
Поэтому советуют использовать ВЫРАЗИТЬ
|
|||
111
PR третий
25.01.16
✎
14:29
|
(109) Соединение ко все типам делается не потому, что мы не знаем тип, а потому что мы тип знаем уже после выполнения запроса. А соединение делается с учетом типа как бэ.
|
|||
112
kolts23381
25.01.16
✎
14:31
|
"Соединение ко все типам делается не потому, что мы не знаем тип, а потому что мы тип знаем уже после выполнения запроса."
Не понятно, можно другими словами? |
|||
113
PR третий
25.01.16
✎
14:33
|
(112) У тебя таблица с составным реквизитом, в ней сто записей.
Как ты ограничишь сразу соединения одной, двумя или несколькими таблицами, а не всеми, если ты не знаешь, какие таблицы нужно присоединять, а какие нет? Ты же данные еще не выбрал и не знаешь, какие типы использовались, а какие нет. |
|||
114
ObjectRelation Model
25.01.16
✎
14:34
|
(111) вот ты можешь расписать фразу "масло масляное"
|
|||
115
PR третий
25.01.16
✎
14:35
|
+(113) Грубо говоря, есть субконто.
С какими таблицами соединять субконто в проводках, если в субконто может быть контрагент, договор, товар и еще дохрена всего? Ты же не знаешь, пока не выберешь данные из проводок. Может у тебя кроме контрагентов ничего и не попадется, а может только контрагенты и договоры, а может еще и товары будут. |
|||
116
kolts23381
25.01.16
✎
14:37
|
Так понятней (113) , то есть мы выбираем набор данных и там может быть разный тип.
Почему я так дотошно, просто делаю стороннюю программу с обменом с 1С и там составной тип данных не предусмотрен и решаю на уровне уникальности ссылок. |
|||
117
PR третий
25.01.16
✎
14:38
|
(116) Ну и зря. Как раз будешь в составном типе тянуть все кавно из базы, вдруг именно там и лежит твоя ссылка.
|
|||
118
Sammo
25.01.16
✎
14:42
|
А зачем это знать?
Потому что гуид мог придти из другой базы, его могли установить руками... Так что любая логика, которая допускает наличие чего-то в гуиде некорректна. Даже сортировка по ссылке без использования даты. Видел реальный пример - для скорости в отчете использовали сортировку документов по ссылке. Мол всегда увеличивается на 1. Ага. Через полгода меняется сервер приложений, ссылка начинает формироваться по-другому и весь отчет ломается. |
|||
119
kolts23381
25.01.16
✎
14:45
|
(117)Ничего умнее на тот момент когда делал не придумал. Через двоеточие тип данных : ссылка придется переделывать много.
|
|||
120
PR третий
25.01.16
✎
14:55
|
(118) Ну да, конечно, ты еще скажи, что в значении реквизита составного типа не хранится тип, только ГУИД ссылки.
|
|||
121
PR третий
25.01.16
✎
14:56
|
(119) Я и говорю, зря.
Будешь каждый раз валюту искать не в справочнике "Валюты", а по всей базе. |
|||
122
НЕА123
25.01.16
✎
15:00
|
(118)
>Так что любая логика, которая допускает наличие чего-то в гуиде некорректна видел типа два справочника с одинаковыми гуидами элементы встречаются (связь какая-то). корявенько, но работает. (119) что переделывать?гуид уникален в таблице, но не в базе. |
|||
123
yukon
25.01.16
✎
15:02
|
(103) Ничего не будет. В том смысле, что все отработает штатно и вернет все ссылки. Ссылка, содержит тип:гуид. Т.е. ничего фатального в одинаковых ГУИДах у разных типов метаданных нет.
|
|||
124
kolts23381
25.01.16
✎
15:11
|
(121) Не по всей базе, а в нескольких таблицах, к тому же ууид используется в качестве первичного ключа и имеет индекс.
|
|||
125
bolobol
25.01.16
✎
15:24
|
(97) Вы ошиблись на ПОРЯДОК в расчётах! Чтобы получилась возможность уложиться в 13 символов длины - один символ должен содержать 920+ вариантов, а не 94!
|
|||
126
bolobol
25.01.16
✎
15:25
|
(88) С тем же успехом можно использовать Рандом(стартовый номер = ГУИД)
|
|||
127
bolobol
25.01.16
✎
15:26
|
*(126) "Рандом(стартовый номер = ГУИД*ГУИД*ГУИД)"
|
|||
128
Cyberhawk
25.01.16
✎
15:27
|
(53) Номер + дата документа, но это ненадежно (запустят перенумерацию или перепроведут оперативно в течение дня с новой датой и что делать будешь?)
|
|||
129
Карупян
25.01.16
✎
15:31
|
1 символ в утф = 4 байта. Поэтому теоретически гуид можно ужать дос троки 4. Только это будет не читабельная строка совсем
|
|||
130
PR третий
25.01.16
✎
16:30
|
(125) Выкинь кашу из своей головы.
Для кодирования ГУИДа было 36 символов, включая 4 тире на фиксированных местах. Я убрал тире. И вместо 32 символов, каждый из которых может принимать 16 вариантов, использую 13, каждый из которых может принимать 94 варианта. Какие, блеать, 920+ вариантов? |
|||
131
Drac0
25.01.16
✎
16:38
|
(126) Эм, ты знаешь, что такое Base 64 и зачем он нужен?
|
|||
132
bolobol
25.01.16
✎
16:50
|
(130) С математикой не дружим совсем? Степени, корень степени - ни о чём не говорят слова? Математика, кагбэ, строгая наука. Ёмкости множества пересчитайте и "тыкать и указывать что делать" можете себе, как только поймёте, что необходимо исправить.
|
|||
133
Карупян
25.01.16
✎
16:51
|
(132) ну реши уровнение
2^16 = 94^x |
|||
134
bolobol
25.01.16
✎
16:51
|
(131) Не представляю. Гуглить лень. Но что-то мне подсказывает, что со сжатием данных оно никак не связано, я не прав?
|
|||
135
bolobol
25.01.16
✎
16:51
|
(133) Что есть это выражение? Зачем мне его решать?
|
|||
136
Карупян
25.01.16
✎
16:51
|
вернее 2^128 = 94^x
|
|||
137
H A D G E H O G s
25.01.16
✎
16:53
|
(136) Что ты там по основанию 94 нашел такого?
|
|||
138
H A D G E H O G s
25.01.16
✎
16:54
|
(129) 1 символ в utf от 1С = 2 байта. целуйте веник.
|
|||
139
H A D G E H O G s
25.01.16
✎
16:54
|
(134) Абсолютно прав.
|
|||
140
Карупян
25.01.16
✎
16:55
|
(137) 94 буквы.
Правда x получается 19.5 |
|||
141
H A D G E H O G s
25.01.16
✎
16:55
|
(140) А, все, увидел.
|
|||
142
H A D G E H O G s
25.01.16
✎
16:57
|
(140) Кого - то поимеютъ.
|
|||
143
Карупян
25.01.16
✎
16:57
|
Чтоб 13 символов было нужно 920 букв в алфавите
|
|||
144
bolobol
25.01.16
✎
16:57
|
(136) Могу только ответ дать: вместо "2" в уравнении будет 1,586..., что говорит о том, что множество справа при степени 13 меньше в 1.26 раза.
|
|||
145
H A D G E H O G s
25.01.16
✎
16:57
|
И этот кто-то - походу - наш Красный Плащ.
|
|||
146
Карупян
25.01.16
✎
16:57
|
На утфе можно в 8 уложиться
|
|||
147
H A D G E H O G s
25.01.16
✎
16:58
|
(146) Это еще более частный случай.
|
|||
148
bolobol
25.01.16
✎
16:59
|
*(144) извиняйте, за нематематическую точность
|
|||
149
H A D G E H O G s
25.01.16
✎
17:00
|
Роман убрал тире...
|
|||
150
bolobol
25.01.16
✎
17:06
|
(149) А мой коллега потом удивляется, что посылка выйдя из Китая, обнаруживается через 1.5 месяца в Калининграде, вместо Питера...
)) |
|||
151
PR третий
25.01.16
✎
17:07
|
(132) Сейчас проверил максимальную длину штрихкода для гуида
"ffffffff-ffff-ffff-ffff-ffffffffffff", получилось не 13, а 20 символов, штрихкод "B2d~msQ*Q+5M('\99=BD". 20 символов максимум по неравенству "16^32 <= 94^x", где x получился равен 20. |
|||
152
PR третий
25.01.16
✎
17:11
|
А, вон откуда 920. Типа 920 возможных символов.
Тогда уж 921, если быть точным. У меня в моем примере со штрихкодами не забалуешь, есть 94 символа, их и грызи. В большинстве случаев одинесовский ГУИД дает 13 символов. |
|||
153
PR третий
25.01.16
✎
17:12
|
(150) Тире как бэ стоят в фиксированных местах, ага
|
|||
154
bolobol
25.01.16
✎
17:24
|
(152) Аааа, вот в чём магия!, в виде нарастающей последовательности, которая не достигает максимума, как правило. Тогда - да, всё под контролем)
|
|||
155
PR третий
25.01.16
✎
17:27
|
(154) У меня была печаль, нужен уникальный признак документа, а даже 32 символа на конверте не напечатаешь, потому что тогда в окне показывается строка совершенно непотребной длины.
А вот 13 вполне влазит, да. |
|||
156
H A D G E H O G s
25.01.16
✎
17:35
|
(154) Ну почему. Можно дождаться, что при потерях данных в 1,5 раза (а именно столько у Романа) мы будем иметь дубли в Почте России в обозримом будущем. Как вот данные там накопятся - так и можно ждать звоночка.
Роман, ты нас держи в курсе. |
|||
157
PR третий
25.01.16
✎
17:36
|
(156) Дима, какие потери, ты о чем? Это преобразование без потерь как бэ :))
|
|||
158
PR третий
25.01.16
✎
17:37
|
+(157) Если в результате преобразования получится, о, неужели!, 14 символов, а не 13, я распечатаю 14 :))
Всяко лучше, чем гарантированно 32 :)) |
|||
159
H A D G E H O G s
25.01.16
✎
17:38
|
"Если в результате преобразования получится, о, неужели!, 14 символов, а не 13, я распечатаю 14 :)"
Ахренеть. А можно алгоритм посмотреть? |
|||
160
PR третий
25.01.16
✎
17:39
|
(159) Можно. (97) :))
Или тебе прямо-таки программный код? |
|||
161
H A D G E H O G s
25.01.16
✎
17:39
|
(160) Код.
|
|||
162
PR третий
25.01.16
✎
17:41
|
(161) Тогда пожалуй не стоит. Все-таки Почта России, а не ООО "Березка" :))
Могу в почту выслать, если очень хочется. Подготовлю обфусцированный код, вышлю. Слать? |
|||
163
H A D G E H O G s
25.01.16
✎
17:46
|
(162) А нафига мне обфусцированный? Давай обычный на
[email protected] |
|||
164
dmpl
25.01.16
✎
17:47
|
(40) В пределах базы просто последовательно инкрементируемый счетчик сойдет с нужной базой (системой счисления).
|
|||
165
dmpl
25.01.16
✎
17:52
|
(78) Если типовая конфигурация - можно хранилище значения с соответствием ссылок и кодов помещать в сохраненные настройки.
|
|||
166
dmpl
25.01.16
✎
17:58
|
(97) Стандартный - не влезет менее чем в 20 символов. Какой-то нестандартный - возможно.
(98) Открой файл обмена с выгрузкой любого составного типа - и все увидишь ;) |
|||
167
dmpl
25.01.16
✎
18:02
|
(122) Гуид уникален глобально.
|
|||
168
dmpl
25.01.16
✎
18:03
|
(130) Это был не гуид. Это просто уид местечковый.
|
|||
169
PR третий
25.01.16
✎
18:51
|
(163) Выслал.
Кстати, сейчас смотрел примеры с ГУИДами, что-то 13 не получается, все 20 символов :)) Видимо, я когда искал решение, где-то в процессе получился какой-то нечитабельный сканером 13-тисимвольный код, поэтому в голове и отложилось про 13 символов. |
|||
170
PR третий
25.01.16
✎
18:52
|
(164) Вообще ГУИД как бэ уникальный в пределах земного шара вроде как.
При желании я ГУИД и в одной базе задублирую, но я говорю про уникально генерируемый. |
|||
171
Злопчинский
25.01.16
✎
18:54
|
кстати, скоро гуидов свободных не останется и наступит ппс.
обсуждаются идеи выдавать гуиды типа как dns - на время... или по подписке... |
|||
172
PR третий
25.01.16
✎
18:58
|
Чет я расстроился про 20 символов :))
То ли дело 13. А тут 20 какие-то :)) |
|||
173
Cyberhawk
25.01.16
✎
19:04
|
(172) Я не понял, так у тебя объекты инфобазы соответствуют 20-значным кодам? А при сканировании 20-значного ШК обратно разворачиваешь этот считанный ШК в ГУИД, так что ли?
|
|||
174
PR третий
25.01.16
✎
19:11
|
(173) Да. Нормально, че. Можно было на регистрах сведений соответствий запилить конечно и при этом еще соответствие генерить, случайным числом, например. Но зачем?
|
|||
175
bolobol
25.01.16
✎
19:24
|
Блиииин... А я ждал, что вот - код потоковой архивации данных на 1С, на микрословаре, получу...
Обидно, чё. |
|||
176
PR третий
25.01.16
✎
19:48
|
(175) Во всей ветке не было ни слова при архивацию
|
|||
177
bolobol
26.01.16
✎
11:32
|
(176) А как ещё сократить последовательность, кроме как сжав её?
|
|||
178
PR третий
26.01.16
✎
12:26
|
(177) Что-то у тебя по ходу вообще каша в голове.
Ты реально не понимаешь, как можно из 2 символов, каждый из которых может принимать только значение "0" или "1", сделать один, если он может принимать значения "0", "1", "2" или "3"? Основная проблема ГУИДа в моем случае, что используются только 16 из разрешенных 94 символов. Тем не менее в моем решении никакой архивации нет, хотя в итоге и получается меньшее количество символов. Архивация — это совершенно иное. |
|||
179
Карупян
26.01.16
✎
12:28
|
(175) по словарю вообще можно в 1 байт уложиться. правда если гуидов немного совсем
Подсказка РС: Номер-ГУИД |
|||
180
dmpl
26.01.16
✎
13:03
|
(175) Словарь, кстати, можно хранить отдельно от кода. В этом случае возможно сжатие.
|
|||
181
dmpl
26.01.16
✎
13:05
|
(179) Ну это крайний вариант, возможны и промежуточные.
|
|||
182
bolobol
26.01.16
✎
13:14
|
(178) У меня хоть каша есть, у вас вообще "оупен-эйр" по теме. Вы действительно уверены, что в один бит можно поместить значения 0, 1, 2 и 3?? Мне смешно с вас)
Ладно, в любом случае - дальше только офф, т.к. реализации, что я спрашивал, у вас всё равно нет. Завязываем) |
|||
183
PR третий
26.01.16
✎
14:19
|
(182) А с хрена ли один бит-то?
|
|||
184
yukon
26.01.16
✎
14:32
|
(182) Вы действительно уверены, что в один бит можно поместить значения 0, 1, 2 и 3
Вы будуте смеятся, но можно. Правда это уже будет не совсем бит, но рядом. А вообще, в (178) не "бит", а "символ". |
|||
185
Smile 8D
26.01.16
✎
15:05
|
(182) Задача, которую решают в ветке - сокращение количества символов в строке, при сохранении уникальности. Задачи сократить количество необходимой памяти (архивировать) - нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |