Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Создать уникальный идентификатор для документа в виде строки из 8 или 9 символов.

Создать уникальный идентификатор для документа в виде строки из 8 или 9 символов.
Я
   new_hope
 
16.11.18 - 13:39
Прошу совет.

Имею 2 разных документа в разных абсолютно базах.
Есть необходимость, для документа создать уникальный идентификатор длинной не более чем 9 символов, что-бы можно было проследить свзяь между этими документами. (Структуру базы менять не особенно удачно в моем случае - решил использовать готовый неиспользуемый реквизит из 9-ти символов)

Или есть способы умнее? Какие?

Может я дурость выдумываю и можно еще какимто образом задать связь?
 
 
   exwill
 
1 - 16.11.18 - 13:41
(0) А номер+дата разве не уникальны?
   Timon1405
 
2 - 16.11.18 - 13:41
А= Прав(Строка(Новый УникальныйИдентификатор),9);
   PR
 
3 - 16.11.18 - 13:43
(0) Не идиотствуй
У меня вот в Почте России была необходимость сократить ГУИД, потому что его нужно было печатать на конверте и он должен уместиться в окно на конверте определенной ширины
А тут высосанная из пальца пурга
Используй ГУИД и делай новый реквизит, возможно доп, а не конфигураторский
   PR
 
4 - 16.11.18 - 13:44
(2) Рукалицо
   exwill
 
5 - 16.11.18 - 13:45
(2) Дубли будут.
   exwill
 
6 - 16.11.18 - 13:46
(0) Фактическая длина номера документа какая?
   Garykom
 
7 - 16.11.18 - 13:47
(0) Этот реквизит есть в обеих базах или только в одной?

Если только в одной то придумывай Хеш-функцию
   new_hope
 
8 - 16.11.18 - 14:06
(6) Номер документа могут поменять вручную, как и дату... Реквизит в 9-ть символов есть только в одной базе, в которой будут создаваться документы, и туда будут присваиваться "уникальное значение". То-есть эти уникальные значения в первой базе будут создаваться на лету каждый раз, и каждый раз они должны быть ФИКСИРОВАННО-уникальными
   new_hope
 
9 - 16.11.18 - 14:09
(3) Я это уже обдумал. Очень затруднительно сделать новый реквизит по некоторым причинам. Пока ищу вариант с имеющимся реквизитом.

Но это как крайний вариант - новый реквизит.

Я так понимаю, GUID - он всегда фиксированный и уникальный, пока есть документ в базе (в любом состоянии реквизитов, помечен на удаление или проведен?)
   exwill
 
10 - 16.11.18 - 14:10
(8) 8 символов номера + 1 символ для года. Вот тебе и уникальность. Если номер документа длиннее 8 - задай префикс.
 
 Рекламное место пустует
   new_hope
 
11 - 16.11.18 - 14:13
(10) Да, спасибо. Так уже работает. Я именно подобным образом и сделал. НО - беспокоит, что могут вручную изменить номер документа. И это вызвало у меня этот вопрос.
А так как документ связан с платежом денег - то меня это вдвойне озадачило
   new_hope
 
12 - 16.11.18 - 14:15
А вопрос - минимизировать ошибку..

То-есть самый верный вариант - использовать GUID и новый реквизит.

Ведь нельзя присвоить GUID документа одной базы - Новому документу другой базы в момент его создания?
   exwill
 
13 - 16.11.18 - 14:15
(11) А зачем тебе этот реквизит вообще? Номер в документе хранится, дата тоже.
   Йохохо
 
14 - 16.11.18 - 14:17
(9) на гуид соль, имя базы например, sha16 и прав 9. Кусок хеша тоже хеш
   АгентБезопаснойНацио
 
15 - 16.11.18 - 14:18
(1) ты не поверишь...
   new_hope
 
16 - 16.11.18 - 14:19
(13) Проверять, что в базе №2 уже существуе документ, который соответствует документу в Базе №1. Если в базе №2 такого документа нет - создать его, но создать только один!!! раз.
   new_hope
 
17 - 16.11.18 - 14:19
(14) Да... сейчас почитаю что и как
   PR
 
18 - 16.11.18 - 14:29
(11) Нет слов
Беги оттуда, пока у них не стрельнула твоя говноподелка
Или делай ГУИД, хоть на допсвойствах, но только не строй здание из говна и палок
Стрельнет же, голову оторвут и собакам выкинут и будут сто раз правы, таких говноподелочников так и надо учить, гнать отовсюду ссаными тряпками
   АгентБезопаснойНацио
 
19 - 16.11.18 - 14:30
а что мешает хранить там уникальный порядковый номер объекта в системе? присавивая последовательно при записи.
и что мешает сделать соотвествие (регистр сведений) номер - ГУИД дока?
а напрямую, подъемом основания системы счисления, до 9 байт штатный ГУИД не уменьшить. Если только до юникодной 8-символьной строки (16 байт)
   PR
 
20 - 16.11.18 - 14:30
(12) Можно, но не нужно
Хотя по сравнению с твоей свистоперделкой — даже этот вариант просто эталон качества, надежности и инженерной мысли
   palsergeich
 
21 - 16.11.18 - 14:31
(1) До первого Обменданными.Загрузка = Истина
   palsergeich
 
22 - 16.11.18 - 14:35
Есть решение, но оно не самое красивое:
Создаете пустой справочник.
Длина номера = 9
И пользуетесь нумератором справочника....
   palsergeich
 
23 - 16.11.18 - 14:37
(22) Ну и делаете подписку на событие в любой транзакционной процедуре, где создаете новый элемент справочника, и его код используете как уникальный нумератор.
(14) не совсем
   1Сергей
 
24 - 16.11.18 - 14:38
Если это восьмёрка, то лучше РС, а не справочник
   palsergeich
 
25 - 16.11.18 - 14:39
(24) В РС надо будет получать текущее значение, ставить упр блокировки и делать запись.
Далеко не факт что будет быстрее.
А тут менеджер клатера Вам дает уникальный код. Платформенная проверка на дубли.
   АгентБезопаснойНацио
 
26 - 16.11.18 - 14:40
(25) заодно в справочник писать ссылку на док. "чтоб два раза не вставать"
   new_hope
 
27 - 16.11.18 - 14:41
Я все понял. Буду делать реквизит, с длинной 32 символа, и туда писать GUID из первой базы. Это самый верный и 100% вариант.
   palsergeich
 
28 - 16.11.18 - 14:41
(26) Что бы 2 раза не вставить - только при создании нового и в транзакции. Все ок будет.
   palsergeich
 
29 - 16.11.18 - 14:43
(27) На уровне документации гарантируется только то что в одной таблице ссылочных данных не может быть 2 записи с одинм ГУИД.
То что ГУИД TimeBased и то что процедура Вам 2 раза не выплюнет одно значение - не гарантируется
   Garykom
 
30 - 16.11.18 - 14:43
Если кроме как для обмена это нахрен не надо то я бы выкинул пары УИД-УИД во внешнюю базу или просто в отдельный регистр/справочник в одну из баз.

А еще лучше при обмене создавать документы с тем же УИД для парных доков ))
   palsergeich
 
31 - 16.11.18 - 14:44
(30) Поздравляю, Вы изобрели MDM
   АгентБезопаснойНацио
 
32 - 16.11.18 - 14:44
(28) "не вставАть".
чтоб по "микрогуиду" сразу найти документ.
   palsergeich
 
33 - 16.11.18 - 14:46
(32) То что будет дальше меня мало интересует - архитектурное решение которое будет удовлетворять задаче я предложил, дальше мне она не интересна
 
 
   АгентБезопаснойНацио
 
34 - 16.11.18 - 14:46
(33)ага.. "я стратегией занимаюсь"©
   new_hope
 
35 - 16.11.18 - 14:47
(29) Так мне нужно GUID уже готового документа. Он может поменяться с течениев времени в пределах одной базы?
   palsergeich
 
36 - 16.11.18 - 14:47
(35) Если ну очень захотеть - то может
   palsergeich
 
37 - 16.11.18 - 14:48
При нормальном развитии событий - нет
   1Сергей
 
38 - 16.11.18 - 14:48
(35) нет
   new_hope
 
39 - 16.11.18 - 14:49
(36) (37) Значит это то, что мне нужно. Если при нормальной работе - это константа - то это то,что мне надо!


(38) Спасибо!
   palsergeich
 
40 - 16.11.18 - 14:50
(38) Я залезу в SQL и поменяю.
По этому и говорю, что теоретически - возможно, но это уже не нормальный сценарий
   1Сергей
 
41 - 16.11.18 - 14:51
(39) но, помни, что запросом уид не достать
   Seriy_Volk
 
42 - 16.11.18 - 14:53
(22) при высокой нагрузке платформа легко создаст два элемента справочника с одинаковыми кодами или два документа с одинаковыми номерами. Проверено на MS SQL + платформа 8.3.10.2252. Из за этого создание нужного уникального идентификатора вынесли на уровень СУБД.
   new_hope
 
43 - 16.11.18 - 14:53
(41) ... О... так я его по ссылке определяю как: XMLСтрока(Док.Ссылка)
   youalex
 
44 - 16.11.18 - 14:54
(40) это будет уже другой документ
   Йохохо
 
45 - 16.11.18 - 14:55
(39) ты же не изобрел РС СоответствияОбъектовИнформационныхБаз?
   palsergeich
 
46 - 16.11.18 - 14:56
(42) Это как правило когда rmmanager у плохо.
Такие случаи надо исследовать.
Из того что видел я - какой нибудь г...но отчет без отборов запускаешь, но там не только нумератор летит.
   new_hope
 
47 - 16.11.18 - 15:00
(45) Нет
   Seriy_Volk
 
48 - 16.11.18 - 15:01
(46) я к тому, что данная ситуация не является чем то фантастическим и при активном внесении данных в один и тот же объект со многих рабочих мест рано или поздно выстрелит.
   palsergeich
 
49 - 16.11.18 - 15:03
(48) По крайней мере это мониторится простейшим запросом.
Выбрать
Сумма(Ссылка),
Код
Из Справочник.ИмяСправочника
СгрпуппироватьПо
Код
Имеющие Сумма(Ссылка)>1
 
 Рекламное место пустует
   palsergeich
 
50 - 16.11.18 - 15:04
Но при нормальной работе сервера 1с такого быть не должно. Если эта ситуация есть - то есть проблемы которые надо искать и устранять.
   palsergeich
 
51 - 16.11.18 - 15:05
Выбрать
Количество(Ссылка),
Код
Из Справочник.ИмяСправочника
СгрпуппироватьПо
Код
Имеющие Сумма(Ссылка)>1
Конечно же количество)))
   palsergeich
 
52 - 16.11.18 - 15:05
Выбрать
Количество(Ссылка),
Код
Из Справочник.ИмяСправочника
СгрпуппироватьПо
Код
Имеющие Количество(Ссылка)>1

Тьфу)
   Seriy_Volk
 
53 - 16.11.18 - 15:07
(49) зачем запускать в работу инструмент, требующий постоянного контроля, если можно использовать штатные механизмы СУБД для генерации уникальных значений?
   palsergeich
 
54 - 16.11.18 - 15:09
(53) Вопрос больше риторический.
Это всего лишь один из вариантов.
А зачем использовать лагучее 1с если есть что то.
   palsergeich
 
55 - 16.11.18 - 15:17
я делал эту задачу как и на справочниках так и на регистрах.
250+ активных юзеров, единственное что за сервером следили. Проблем не было.
Но действительно коллизии возможны, если хочется железобетона - или РС с упр блокировками или SQL
   PR
 
56 - 16.11.18 - 15:45
(45) О, прозвучала дельная мысль, если нельзя делать новый реквизит :))


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует