Имя: Пароль:
1C
1С v8
Запутался в УстановитьСсылкуНового() и ПолучитьСсылкуНового()
,
0 Wobland
 
28.09.11
10:16
как это всё работает? исходная задача: программно создаю контрагента и договор (подчинённый справочник). записывать не хочу. так вот владелец у договора не проставляется. делаю так:
   Контрагент=Справочники.Контрагенты.СоздатьЭлемент();
   СсылкаНового=Справочники.Контрагенты.ПолучитьСсылку();
   Контрагент.УстановитьСсылкуНового(СсылкаНового);
   Договор=Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
   Договор.Владелец=Контрагент.ПолучитьСсылкуНового();
1 Ненавижу 1С
 
гуру
28.09.11
10:20
(0) откуда знаешь,что не проставляется?
2 PR
 
28.09.11
10:21
(1) Интуиция :))
3 Wobland
 
28.09.11
10:22
(1) в отладчике гляжу - объект не найден. то же самое и на форме открывшегося договора
4 Wobland
 
28.09.11
10:22
+(3) Контрагент.Ссылка.УникальныйИдентификатор(), кстати, равен 00000000-0000-0000-0000-000000000000, а СсылкаНового.УникальныйИдентификатор() уже что-то осмысленное
5 sda553
 
28.09.11
10:23
То что объект не найден говорит что у тебя все отлично отработало. А что ты там ожидал увидеть. Когда объект запишется он станет найденным
6 Beduin
 
28.09.11
10:23
(4) А договор ты записываешь при этом?
7 sda553
 
28.09.11
10:24
Контрагент=Справочники.Контрагенты.СоздатьЭлемент();
   СсылкаНового=Справочники.Контрагенты.ПолучитьСсылку();
   Контрагент.УстановитьСсылкуНового(СсылкаНового);
   Договор=Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
   Договор.Владелец=Контрагент.ПолучитьСсылкуНового();
   ....
   Контрагент.Записать();

Вот после это и проверь в отладчике, что в договоре стало
8 Wobland
 
28.09.11
10:27
(7) в договоре та же ерунда. хотя в отладчике после Записать() всё нормально. другой вопрос задам. ожидать того, что незаписанный владелец у договора присвоится корректно идеологически неверно?
9 sda553
 
28.09.11
10:29
(8) То что присваевается "Объект не найден" как раз и говорит что договор от контрагента которого в базе нет и в базу этот контрагент не записан. Т.е. то что поставлено в первой задаче решено.
Идеологически же неправильно. По идеологии надо завести контрагента "Нет контрагента" и такие договора скидывать на него.
10 Wobland
 
28.09.11
10:30
(9) в голове стало яснее, спасибо