|
Уникальное значение реквизита. Методы формирования. | ☑ | ||
---|---|---|---|---|
0
CAPITALIST
02.02.17
✎
09:02
|
Необходимо создать альтернативный номер документа, уникальный за весь период работы. Стандартный номер может быть не уникальный даже в рамках года - каприз бухов.
Добавил реквизит УникальныйНомер числовой. Написал функцию получения номера. Работает так: Берет запросом максимальное значение УникальныйНомер и добавляет 1. УникальныйНомер присваивается ПередЗаписью в модуле объекта для новых документов. Теперь такая ситуация: Одновременно записываются два новых документа. Одновременно срабатывает ПередЗаписью и функция получения уникального номера возвращяет для них одно и то же значение. Как быть? Возможно кому-то приходилось решать такую задачу? Какой может быть другой алгоритм получения уникального значения? |
|||
1
Serg_1960
02.02.17
✎
09:15
|
"Другой алгоритм" - чем стандартный механизм платформы, алгоритмы проверенные временем, Вас не устраивает? :)
"Левый" справочник (код, наименование, ссылка на документ) - вот и готов источник "альтернативного номера документа"(цы). Дальше объяснять? |
|||
2
FIXXXL
02.02.17
✎
09:15
|
(0) нумератор прикрутить?
РС и блокировку на него на время получения номера? |
|||
3
Рэйв
02.02.17
✎
09:16
|
Вот держи и не жалуйся:-)
Уникальнее некуда УникальныйНомер =Строка(Новый УникальныйИдентификатор); |
|||
4
FIXXXL
02.02.17
✎
09:16
|
и зачем еще такой номер нужен? мож УИД проще писать в реквизит?
|
|||
5
aka AMIGO
02.02.17
✎
09:16
|
(1) В одно и то-же место справочника полезут оба документа.
|
|||
6
Базис
naïve
02.02.17
✎
09:19
|
Хеш, двухэтапная запись с контролем уникальности на каждом этапе, просто длинная случайная строка, GUID из нескольких инкрементных полей.
|
|||
7
Serg_1960
02.02.17
✎
09:19
|
(5) Да хоть десять и все сразу. Автонумерация не боится многопользовательского режима :))
Кстати: придумывая алгоритмы, некоторые авторы "забывают" об "Отказ = Истина;" и не продумывают что и как делать во время транзакций и откате её. |
|||
8
KishMish
02.02.17
✎
09:21
|
(0) можно использовать совокупность год+номер - гарантировано
уникальная комбинация |
|||
9
Serg_1960
02.02.17
✎
09:22
|
Почитал советы... хмм.. зачем плодить сущности? Тогда уж сам уникальный номер документа и использовать.
|
|||
10
Serg_1960
02.02.17
✎
09:24
|
(8) "Стандартный номер может быть не уникальный даже в рамках года - каприз бухов."(тс)
|
|||
11
Мимохожий Однако
02.02.17
✎
09:28
|
(0) И рыбку съесть, и .. не получится. Не надо отключать уникальность номера. Заведи им дополнительный и пусть пишут туда, что хотят. ИМХО, не всю правду говоришь.
|
|||
12
Serg_1960
02.02.17
✎
09:29
|
*(1) PS: я не придумывал ничего нового - адаптация к месту алгоритма РАУЗ (связь "запись регистра" <=> "запись справочника").
|
|||
13
Serg_1960
02.02.17
✎
09:55
|
(0) "Мой гений дарит вам"(цы) гениальный алгоритм: из уникального идентификатора документа выделяется время создания ссылки, которое используется для генерации "сквозного" номера.
|
|||
14
CAPITALIST
02.02.17
✎
11:16
|
(1) Не устраивает бухов. Делать в качестве УникальногоНомера ссылку на справочник и каждый раз создавать элемент? Лишние транзакции.
(2) Разве есть возможность прикрутить нумератор к реквизиту? Нумератор прикручивается только к стандартному Номеру. (3) Нет, номер должен быть читабельный, чтобы люди могли работать. Плюс с него генерится штрихкод |
|||
15
FIXXXL
02.02.17
✎
12:10
|
(14) ну тогда закрывай платформенный номер от изменений, транслируй его в реквизит НомерБух, который можно менять
|
|||
16
FIXXXL
02.02.17
✎
12:11
|
(15) кстати, в процедуре документа ПриУстановкеНовогоНомера есть возможность считать устанавливаемый платформой номер?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |