Имя: Пароль:
1C
 
УстановитьСсылкуНового
0 Кондер
 
16.05.24
10:48
Код:
НовСсылка = Мен.ПолучитьСсылку();            
объект.УстановитьСсылкуНового(НовСсылка);

Отладка:
ТипЗнч(НовСсылка) = ТипЗнч(Объект.Ссылка) (ИСТИНА)
НовСсылка = Объект.Ссылка (ЛОЖЬ)

Вопрос:
Почему Ложь?
1 Кондер
 
16.05.24
10:46
НовСсылка = Мен.ПолучитьСсылку();                         

объект.УстановитьСсылкуНового(НовСсылка);
        
УстановленнаяСсылка = Объект.ПолучитьссылкуНового();

УстановленнаяСсылка  = НовСсылка (ИСТИНА)
2 trad
 
16.05.24
10:47
Потому что Объект.Ссылка приобретет новое значение только при записи
3 trad
 
16.05.24
10:55
Объяснить это я могу тем, что значение Объект.Ссылка должно быть гарантированно уникальным и вообще быть в БД.
А гарантировать уникальность новой ссылки можно только проверив это в транзакции при записи.
Вот, только после записи, новая ссылка будет записана в БД и она будет уникальна, и только тогда ей место в Объект.Ссылка
4 Кондер
 
16.05.24
11:05
(3) По вашему получается, что если мы записали куда то в другие объекты НовСсылка, то она не будет равна Объект.Ссылка.
5 trad
 
16.05.24
11:17
Будет равна только после записи объекта
6 Кондер
 
16.05.24
11:20
(5) Будет
7 Ёпрст
 
16.05.24
11:35
(0)УстановитьСсылкуНового - это маркер,  только помечает, что объекту при записи объекта присвоят этот гуид ссылки.
Самой ссылки еще нема, поэтому и ложь (объекта то нет в базе, нет объекта -  нету ссылки)
8 Fedor-1971
 
16.05.24
11:37
(6) Не факт, вот кусок СП:
УстановитьСсылкуНового(<Ссылка>)
....

Устанавливает значение для нового (созданного и еще не записанного) объекта, которое будет назначено при записи в качестве ссылки. Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа.

Уникальность ссылки проверяется при записи объекта.

т.е. если одновременно пытаются записать 2 объекта одного типа, то есть вероятность совпадения ссылок и один из них может вывалиться в ошибку
9 Ёпрст
 
16.05.24
11:38
(4) если не запишешь сам объект с этим гуидом, то в других будет "битая ссылка", <объект не найден>.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.