|
как заменить ссылку+гуид на простое число? | ☑ | ||
---|---|---|---|---|
0
vde69
10.02.22
✎
16:35
|
сейчас в базе в качестве образователя партии используется комбинация ссылка+гуид (документ оприходывания + гуид из табличной части этого документа), для программы такая комбинация нормально работает.
Но пользователи хотят простой числовой номер для партии, с соответствующим поиском. Первое, что приходит на ум - генерить элементы справочника, но тут и вопросы быстродействия и проблеммы с удалением не нужных и еще куча нюансов, короче идея со справочником рабочая, но я ищу способ попроще... есть ли какой относительно простой способ программной генерации числового кода по гуид+ссылка? ps поймал себя, на мысли, что хотел добавить что-то тапа "мой гений дарит Вам гуру тест" :) пора в отпуск :) |
|||
1
Бизон
10.02.22
✎
16:38
|
НомерСтроки + Ссылка
|
|||
2
DrShad
10.02.22
✎
16:38
|
в любом случае получится очень длинное число и визуально его не воспринять
|
|||
3
vde69
10.02.22
✎
16:41
|
(1) не катит, в документе могут сортировку изменить и все...
(2) ну например можно пробовать что-то вроде - CRC, там не такое и большое будет. |
|||
4
H A D G E H O G s
10.02.22
✎
16:44
|
Base64Строка() от md5 хеша
|
|||
5
Бизон
10.02.22
✎
16:47
|
Да ну нах, нумеруешь строки например при первой записи и все, хоть сортируй хоть не сортируй
|
|||
6
acht
10.02.22
✎
16:48
|
(4) А обратно в ссылку + гуид брутфорсом превращать? =)
|
|||
7
Ёпрст
10.02.22
✎
16:50
|
(0) текущаядата числом + номер строки
|
|||
8
H A D G E H O G s
10.02.22
✎
16:55
|
(6) Да, затупил.
|
|||
9
pechkin
10.02.22
✎
16:59
|
только регистр или справочник соотвествий. ибо пользователям нужны небольшие числа максимум 5-6 знаков
|
|||
10
1Сергей
10.02.22
✎
16:59
|
а базу данных простых чисел где брать будете?
ЗЫ шутка) |
|||
11
vde69
10.02.22
✎
17:09
|
(9) у меня есть некий аналог "доп реквизитов", по этому такой номер я могу хранить сразу там, он связан с гуидом. Весь вопрос в генерации номера. Блокировать таблицу и искать максимальный а потом добавлять 1 не очень хорошо.
Вот я и ищу варианты генерации без блокировки... |
|||
12
vde69
10.02.22
✎
17:11
|
(11) может можно как-то использовать момент времени документа?
|
|||
13
pechkin
10.02.22
✎
17:14
|
сделай номер документа + код строки (не путать с гуидом строки и номером строки)
|
|||
14
Irbis
10.02.22
✎
17:14
|
Преврати гуид в число, но его длина пользюкам не понравится
|
|||
15
H A D G E H O G s
10.02.22
✎
17:15
|
base64 будет самый короткий в возможностях 1С. Если просто число - то это будет примерно вот такое на один UID
340282366920938000000000000000000000000 |
|||
16
H A D G E H O G s
10.02.22
✎
17:15
|
А у тебя будет 2 таких числа
|
|||
17
H A D G E H O G s
10.02.22
✎
17:15
|
В виде base64 будет примерно так
U7yYVX30EeyWhuDVXoOOIQ==;NfoLMIJxQ/KYsI/9Z4+oyw== |
|||
18
pechkin
10.02.22
✎
17:16
|
а сами партии - это какая сущность?
|
|||
19
H A D G E H O G s
10.02.22
✎
17:16
|
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.Идентификатор=Новый УникальныйИдентификатор; КонецПроцедуры Функция УникальныйИдентификаторВBase64(Идентификатор) ИдентификаторСтрокой=Строка(Идентификатор); ИдентификаторСтрокой=СтрЗаменить(ИдентификаторСтрокой,"-",""); ИдентификаторДвоичныеДанные=ПолучитьДвоичныеДанныеИзHexСтроки(ИдентификаторСтрокой); ИдентификаторBase64=Base64Строка(ИдентификаторДвоичныеДанные); Возврат ИдентификаторBase64; КонецФункции &НаКлиенте Процедура ВЧисло(Команда) СсылкаBase64=УникальныйИдентификаторВBase64(Объект.Ссылка.УникальныйИдентификатор()); ИдентификаторBase64=УникальныйИдентификаторВBase64(Объект.Идентификатор); Объект.Результат=СсылкаBase64+";"+ИдентификаторBase64; КонецПроцедуры |
|||
20
pechkin
10.02.22
✎
17:17
|
(19) ты увлекся. Цель показать читабельное число
|
|||
21
H A D G E H O G s
10.02.22
✎
17:22
|
(20) Да никак не показать без регистра соответствий
|
|||
22
vde69
10.02.22
✎
17:23
|
а гуиды если их отсортировать в SQL сортируются по моменту времени когда они были созданы?
|
|||
23
pechkin
10.02.22
✎
17:24
|
(22) а обменов нет?
|
|||
24
Irbis
10.02.22
✎
17:27
|
(22) не факт, нужно смотреть что там в первой группе цифр, может тип/вид объекта
|
|||
25
acht
10.02.22
✎
17:27
|
(22) Это как сгенерируешь. Если как новый уникальный идентификатор, то нет. Ессли через получение ссылки нового, то да, но в пределах какой-то пачки.
1С для этого биты в гуиде и переставляет, чтобы кластерный индекс не рвался. |
|||
26
vde69
10.02.22
✎
17:27
|
(23) для этих гуидов - нет
|
|||
27
Ёпрст
10.02.22
✎
17:53
|
(26) чем (7) не устраивает ?
|
|||
28
Ёпрст
10.02.22
✎
17:54
|
количество миллисекунд у тебя даёт первую часть твоего числа, номер строки - вторую.
В любом доке будешь иметь уникальные числа всегда. |
|||
29
Ёпрст
10.02.22
✎
17:54
|
ну и.. короткие они, хоть в ean 13 пихай.
|
|||
30
mistеr
10.02.22
✎
17:59
|
(0) А в какой ситуации пользователям нужен поиск *по номеру партии*?
|
|||
31
Buster007
10.02.22
✎
18:34
|
(28) ага, 20 раз провел документ, 20 раз появилась новая партия.
|
|||
32
rudnitskij
10.02.22
✎
18:51
|
(0) сделай справочник партий и показывай им код элемента
|
|||
33
rudnitskij
10.02.22
✎
18:54
|
(0) "короче идея со справочником рабочая, но я ищу способ попроще..." - а проще нет. Рег сведений сложнее. Таблицы СКЛ те же самые, только код, дающий партии уник номер, тее придется писать самому, а код справочника генерит сама база
ЗЫ. А зачем "удалять ненужные"? Ненужных тут нет. Или вы удаляете документы оприходования "ненужных" партий? |
|||
34
pechkin
10.02.22
✎
18:57
|
(33) строки можно удалять
|
|||
35
Йохохо
10.02.22
✎
19:03
|
кстати юзеры прекрасно диктуют русские буквы, по основанию 40 будет короче
|
|||
36
mistеr
10.02.22
✎
19:12
|
(33) Проблема с "удалением ненужных" реальна. Не так давно разгребал такое.
Ненужные образуются, например, когда набили приход, что-то там у них не так село, и решили "перебить". А старый док на удаление. Иногда вплоть до новой номенклатуры. И потом хрен удалишь с перекрестными ссылками. |
|||
37
Irbis
10.02.22
✎
19:14
|
с этой точки зрения не ссылочный тип удобнее
|
|||
38
Serg_1960
10.02.22
✎
20:05
|
(0)Дата из GUIDа документа с миллисекундами + КлючСтроки из ТЧ документа. Пример: 10022022.001.001
|
|||
39
Serg_1960
10.02.22
✎
20:10
|
(38) Упс, Акелла промахнулся :) "38 - 10.02.22-20:05" --> 100222.2005.000.038
|
|||
40
Конструктор1С
10.02.22
✎
20:53
|
(0) заведи служебный справочник с автонумерацией и числовым кодом. В реквизиты справочника пихай ссылку на документ и гуид. Программно всё это разруливай и будет тебе щасте
|
|||
41
pechkin
10.02.22
✎
21:44
|
(36) это решается 1 подпиской при записи документа удалять все лишние партии
|
|||
42
mistеr
10.02.22
✎
23:26
|
(41) При каждой записи глобальный поиск по ссылкам? Так себе идея. Особенно если при записи тех ссылок в доке уже нет.
|
|||
43
Ryzeman
11.02.22
✎
06:59
|
(0) GUID можешь преобразовывать как ШК форм в типовых - очищаешь от пробелов и конвертируешь в десятиричное число. Ссылку - сам придумывай как преобразовывать)
|
|||
44
Pprog151713
11.02.22
✎
07:09
|
(4) Слушай, а на кой ты переводишь двоичные данные в Base64Строка? У меня тут контроллер есть, я им двоичные данные гоняю. А ты большой специалист. Для чего это?
|
|||
45
breezee
11.02.22
✎
07:21
|
(0) Может номер + "_" + дата + "_" + номерСтроки ?
Просто и понятно |
|||
46
Pprog151713
11.02.22
✎
07:31
|
(0) Номер, дата без секунд, номер строки, какие проблемы.
|
|||
47
Ненавижу 1С
гуру
11.02.22
✎
07:37
|
Ссылка + Гуид это фактически два гуида, то есть 2*128=256 бит
Нормальных чисел таких нет, поэтому ничего не вижу плохого в справочнике (это кстати снова ссылка-гуид) ключей партий Представление справочника уже можно сделать более человеческим |
|||
48
Гений 1С
гуру
11.02.22
✎
08:10
|
(0) До гения тебе еще дядя... как мне до коттеджа в Светлогорске. Т.е. совсем ничего.
|
|||
49
dmt
11.02.22
✎
08:27
|
(0) оставить Ссылка + Гуид, а выводить пользователю (принимать для ввода) Номер оприходования + "/" номер строки.
Если документ оприходования не блокируется и порядок строк может быть изменен - добавить в ТЧ колонку КодСтроки и нумеровать программно. |
|||
50
Pprog151713
11.02.22
✎
08:59
|
(49) Это вообще норм. )
|
|||
51
Ёпрст
11.02.22
✎
10:52
|
(31) код заполняется один раз.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |