Имя: Пароль:
1C
1С v8
ПолучитьСсылкуНового()
0 Timekiller
 
15.02.13
15:21
ЭлементНоменклатуры = Справочники.Номенклатура.СоздатьЭлемент();
   ЭлементНоменклатуры.УстановитьСсылкуНового(Справочники.Номенклатура.ПолучитьСсылку());
   ЭлементНоменклатурыСсылка = ЭлементНоменклатуры.ПолучитьСсылкуНового();
   
   ЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   ЕдиницаОбъект.Владелец = ЭлементНоменклатурыСсылка;
   ЕдиницаОбъект.ЕдиницаПоКлассификатору = ЕдИзмПоОКЕИ.Ссылка;
   ЕдиницаОбъект.Наименование = "шт";
   ЕдиницаОбъект.Коэффициент = 1;
   Попытка
       ЕдиницаОбъект.Записать();
   Исключение
       Лог = Лог + ОписаниеОшибки() + Символы.ПС;
       Ошибки = Истина;
       Продолжить;
   КонецПопытки;

{Форма.Форма.Форма(622)}: Ошибка при вызове метода контекста (Записать): Значение поля "Владелец" не заполнено или заполнено неверно

Не могу понять, где ошибся?
1 Rie
 
15.02.13
15:24
(0) Так не записал ведь владельца (номенклатуру) для единицы.
2 Timekiller
 
15.02.13
15:31
ну так я и делаю получение ссылки нового элемента, чтобы уйти от записи.
3 Maxus43
 
15.02.13
15:32
ЭлементНоменклатуры.УстановитьСсылкуНового(Справочники.Номенклатура.ПолучитьСсылку());
   ЭлементНоменклатурыСсылка = ЭлементНоменклатуры.ПолучитьСсылкуНового();

чо это?
Устанавливай СсылкуНового номенклатуре, а владельцу единицы - Номенклатура.Ссылка
4 Rie
 
15.02.13
15:33
(2) Хочешь ссылочную целостность базы данных порушить? :-)
5 Сергиус
 
15.02.13
15:33
Из СП:

"Позволяет для нового (созданного и еще не записанного) объекта получить ранее установленное методом УстановитьСсылкуНового значение ссылки.
"

работает в таком контексте.
6 Maxus43
 
15.02.13
15:34
ну единицу записывать без номенклатуры смысла нет
7 Сергиус
 
15.02.13
15:35
(6) без владельца ты это и не провернешь никак..
8 Maxus43
 
15.02.13
15:42
(7) я всё могу

   ОбНом = Справочники.Номенклатура.СоздатьЭлемент();
   ОбНом.УстановитьСсылкуНового(Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор));
   Ед = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   Ед.Владелец = ОбНом.ПолучитьСсылкуНового();
   ед.ОбменДанными.Загрузка = Истина;
   Ед.Записать();
9 acsent
 
15.02.13
15:43
(4) просто в транзакции нужно делать и все
10 Maxus43
 
15.02.13
15:44
(3) не смотреть, код (0) впринципе правильный
11 НЕА123
 
15.02.13
16:25
(0)
возможно, где-то в модуле объекта или подписке владелец очищается. отладчиком пройтись надо.
12 Reset
 
15.02.13
16:28
По моему, нельзя без записи объекта-владельца сделать.
Запись в регистр набора/записи с такой ссылкой, к примеру, можно(даже если это регистратор), или "просто" реквизит в каком-нибудь объекте; но подчиненный элемент без владельца нельзя.
Ссылка должна быть на записанный объект. Платформа печется об (4)

а)Если делается с целью получить ссылку на единицу, которую необходимо подставить в номенклатуру перед записью, то нужно сделать обратный финт: ссылку нового получать для единицы, которую записать позже

б)Или ОбменДанными.Загрузка=Истина поставить.

в) Или меня глючит в пятницу :)
13 Timekiller
 
15.02.13
17:18
(8) Без тебя пропал бы. Все дело в строчке:
ед.ОбменДанными.Загрузка = Истина;
Спасибо Maxus
14 Rie
 
15.02.13
17:21
(13) И пойдёт по свету гулять база с висящими ссылками...
Ждём следующей темы на ту же тему.
15 Skylark
 
15.02.13
17:26
Да ладно, если делать все аккуратно, то будет все нормуль.
Главное чтобы потом с этим УИДом что он в качестве владельца указывает создал реальную номенклатуру и все.

Это вполне допустимая практика. XML так грузится - фигачатся все объекты одного типа, в реквизитах ссылочного типа УИДЫ; а потом все объекты другого типа создаются и по УИДам все чики-пики.
16 Rie
 
15.02.13
17:34
(15) Так а кто ему мешает не потом, а сейчас создать реальную номенклатуру? Ну вот зачем нужен код, пусть даже гипотетически порождающий ошибки, если есть возможность сразу написать безопасный код?
Есть подозрение, что всё это нужно для создания нового элемента справочника "Номенклатура". И, вместо того, чтобы создать номенклатуру, а потом заполнить поля с единицами, - человек начинает заполнять поля единиц в ещё недосозданной номенклатуре.
17 Rie
 
15.02.13
17:35
+(16) Вариант с XML - несколько из другой оперы. Там вариант Maxus43 как раз кстати.