| 
    
            
         
         | 
    
  | 
Уникальное значение реквизита. Методы формирования. | ☑ | ||
|---|---|---|---|---|
| 
    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) кстати, в процедуре документа ПриУстановкеНовогоНомера есть возможность считать устанавливаемый платформой номер?     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |