Имя: Пароль:
1C
1С v8
Из чего состоит уникальный идентификатор?
,
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
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) Задача, которую решают в ветке - сокращение количества символов в строке, при сохранении уникальности. Задачи сократить количество необходимой памяти (архивировать) - нет.