|
УстановитьСсылкуНового |
☑ |
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) если не запишешь сам объект с этим гуидом, то в других будет "битая ссылка", <объект не найден>.
|
|