| 
    
        
     
     | 
    
  | 
Запись УникальногоИдентификатора в реквизит | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:18 
 | 
         
        Добрый день.
 
        Пишу в модуле менеджера справочника такой код и при записи он не заполняет реквизит, в чем может быть проблема? Процедура ПриЗаписи(Отказ) ЭтотОбъект.УникальныйИдентификаторСтрока = Строка(Ссылка.УникальныйИдентификатор()); КонецПроцедуры  | 
|||
| 
    1
    
        Cyberhawk    
     14.03.18 
            ✎
    15:20 
 | 
         
        При записи уже ничего не запишешь в объект     
         | 
|||
| 
    2
    
        Cyberhawk    
     14.03.18 
            ✎
    15:21 
 | 
         
        Объект уже записан в БД и изменению не подлежит     
         | 
|||
| 
    3
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:21 
 | 
         
        (1) А перед записью, он ведь не имеет еще ссылки? или через получитьссылкунового?     
         | 
|||
| 
    4
    
        Cyberhawk    
     14.03.18 
            ✎
    15:21 
 | 
         
        Устанавливай ссылку новому и в ПередЗаписью сохраняй     
         | 
|||
| 
    5
    
        Волшебник    
     14.03.18 
            ✎
    15:21 
 | 
         
        Например, это новый объект и у него ещё нет ссылки.     
         | 
|||
| 
    6
    
        Necessitudo    
     14.03.18 
            ✎
    15:21 
 | 
         
        В модуле менеджера? ПриЗаписи?     
         | 
|||
| 
    7
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:28 
 | 
         
        Если ЭтотОбъект.ЭтоНовый() Тогда 
 
        // Получаем возможно уже установленную ранее ссылку нового СсылкаНаОбъект = ЭтотОбъект.ПолучитьСсылкуНового(); Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект) Тогда // Если ссылка нового пустая, то запрашиваем ее у менеджера и устанавливаем СсылкаНаОбъект = Справочники.ХарактеристикиНоменклатуры.ПолучитьСсылку(); ЭтотОбъект.УстановитьСсылкуНового(СсылкаНаОбъект); КонецЕсли; УникальныйИдентификаторСтрока = Строка(ЭтотОбъект.Ссылка.УникальныйИдентификатор()); КонецЕсли;  | 
|||
| 
    8
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:28 
 | 
         
        Не заполняет, все равно     
         | 
|||
| 
    9
    
        Mankubus    
     14.03.18 
            ✎
    15:31 
 | 
         
        (7) перед записью делаешь?     
         | 
|||
| 
    10
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:32 
 | 
         
        (9) Ага     
         | 
|||
| 
    11
    
        Cyberhawk    
     14.03.18 
            ✎
    15:33 
 | 
         
        (8) СП в помощь. Ты делаешь не то. У нового никакой ссылки и нет. Тебе надо ее сгенерировать и установить.     
         | 
|||
| 
    12
    
        Cyberhawk    
     14.03.18 
            ✎
    15:34 
 | 
         
        Ты там кем и как работаешь?     
         | 
|||
| 
    13
    
        Cyberhawk    
     14.03.18 
            ✎
    15:34 
 | 
         
        На окладе штаны протираешь аль во фране попу мылишь?     
         | 
|||
| 
    14
    
        Serg_1960    
     14.03.18 
            ✎
    15:40 
 | 
         
        (7) То, что ты установил ссылку новому объекту, вовсе не означает что теперь можно обращаться по ссылке в базу - объекта ещё нет в базе. Ок?     
         | 
|||
| 
    15
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:42 
 | 
         
        (14) Ок а как тогда гуид его получить?     
         | 
|||
| 
    16
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:44 
 | 
         
        Все получилось
 
        ЭтотОбъект.УстановитьСсылкуНового(Справочники.ХарактеристикиНоменклатуры.ПолучитьСсылку(Новый УникальныйИдентификатор)); УникальныйИдентификаторСтрока = Строка(ЭтотОбъект.ПолучитьСсылкуНового().УникальныйИдентификатор());  | 
|||
| 
    17
    
        VS-1976    
     14.03.18 
            ✎
    15:46 
 | 
         
        (16) В модуле менеджера или всё же объекта? Это несколько разные вещи...     
         | 
|||
| 
    18
    
        ilyavorobyev    
     14.03.18 
            ✎
    15:49 
 | 
         
        (17) модуле объекта конечно     
         | 
|||
| 
    19
    
        Serg_1960    
     14.03.18 
            ✎
    16:07 
 | 
         
        УИД = Новый УникальныйИдентификатор();
 
        ЭтотОбъект.УстановитьСсылкуНового(Справочники.ХарактеристикиНоменклатуры.ПолучитьСсылку(УИД)); ЭтотОбъект.УникальныйИдентификаторСтрока = УИД;  | 
|||
| 
    20
    
        Cyberhawk    
     14.03.18 
            ✎
    16:17 
 | 
         
        (19) Любитель давать непрошенные советы? )     
         | 
|||
| 
    21
    
        Serg_1960    
     14.03.18 
            ✎
    21:43 
 | 
         
        Ага, меня прям распирает от желания делиться знаниями :)
 
        PS: Посмотри внимательно на алгоритм в (16)  | 
|||
| 
    22
    
        Cyberhawk    
     14.03.18 
            ✎
    23:01 
 | 
         
        Ага, глядел конечно, то что там не кофильфо стало понятно сразу после прочтения и в голове мысля такая же родилась, как и у тебя в виде (19).
 
        Но там же и фраза "Все получилось", т.е. оно работает, и Я воздержался от акта перфекционизма )  | 
|||
| 
    23
    
        ilyavorobyev    
     14.03.18 
            ✎
    23:23 
 | 
         
        (19) Спасибо! Переписал, так действительно лучше!     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |