|
Запутался в УстановитьСсылкуНового() и ПолучитьСсылкуНового()
| ☑ |
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) в голове стало яснее, спасибо
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший