Имя: Пароль:
1C
1С v8
как работает УстановитьСсылкуНового и ПолучитьСсылкуНового
0 zarik
 
02.11.12
11:53
Помогите пожалуйста разобраться. Есть два куска кода
1.
ЕдинПоКласиф = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
   
   ЕдИзм = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   СсылкаНовойЕд = Справочники.ЕдиницыИзмерения.ПолучитьСсылку();
   
   ЕдИзм.УстановитьСсылкуНового(СсылкаНовойЕд);
   ЕдИзм.ПолучитьСсылкуНового();
   ЕдИзм.ЕдиницаПоКлассификатору=ЕдинПоКласиф;
   ЕдИзм.Коэффициент = 1;
   Едизм.Наименование = "шт";
   
   НовыйТовар=Справочники.Номенклатура.СоздатьЭлемент();
   НовыйТовар.ЕдиницаХраненияОстатков=Едизм;
   НовыйТовар.БазоваяЕдиницаИзмерения=ЕдинПоКласиф;
   НовыйТовар.Наименование="Ваще новый товар"; // нужно ведущие нули

   Новыйтовар.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");
   НовыйТовар.Записать();
   //товар записан со ссылкой на единицу измерения, которой в базе нет и в самой ссылке видим объект не найден

   Едизм.Владелец=НовыйТовар.Ссылка;
   Едизм.Записать();


2.
   Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
   СсылкаНового = Справочники.Номенклатура.ПолучитьСсылку();
   Номенклатура.УстановитьСсылкуНового(СсылкаНового);
   Номенклатура.ПолучитьСсылкуНового();
   Номенклатура.Наименование = "Ваще новый товар";
   
   Едизм = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
   Едизм.Владелец = Номенклатура;
   ЕдИзм.ЕдиницаПоКлассификатору=ЕдинПоКласиф;
   Едизм.Коэффициент=1;
   Едизм.Наименование = "шт";
   ЕдИзм.Записать();
   
   Номенклатура.ВидНоменклатуры=Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");
   Номенклатура.ЕдиницаХраненияОстатков=Едизм.Ссылка;
   Номенклатура.БазоваяЕдиницаИзмерения=ЕдинПоКласиф;
   Номенклатура.Записать();
1 1Сергей
 
02.11.12
11:54
и?
2 zarik
 
02.11.12
11:54
забыл вопрос написать. Так вот вопрос
1 кусок кода работает а нижний нет, пишет что Владелец либо не установлен, либо установлен неправильно
3 zarik
 
02.11.12
11:55
мне непонятно почему второй не работает. Впринципе тоже самое, только подчиненный справочник и справочник владелец местами меняются
4 1Сергей
 
02.11.12
11:56
(2) Едизм.Владелец = Номенклатура.Ссылка;

не?
5 zarik
 
02.11.12
12:02
(4) Не, так тоже не работает. К томуже Номенклатура.Ссылка, вообще значение пустое, а просто Номенклатура, там есть Значение.
6 1Сергей
 
02.11.12
12:03
(5) а СсылкаНового что?
7 zarik
 
02.11.12
12:03
(4) к тому же НовыйТовар.ЕдиницаХраненияОстатков=Едизм рабтает без всяких Едизм.Ссылка
8 zarik
 
02.11.12
12:05
(6) СсылкаНового Объект не найден, ну в принципе логично, т.к. это пустая ссылка совсем
9 acsent
 
02.11.12
12:08
Это
Номенклатура.ПолучитьСсылкуНового();
Абсолютно не нужно, ведь это функция а не процедура
10 acsent
 
02.11.12
12:08
Нужно
Едизм.Владелец = СсылкаНового;
11 zarik
 
02.11.12
12:18
(10) всё равно не работает. Я закоментил строку Номенклатура.ПолучитьСсылкуНового(); и написал Едизм.Владелец = СсылкаНового; вместо Едизм.Владелец = Номенклатура, теперь Владелец присаивается  - ОбъектНенайден, и всё равно ошибку выдает при записи единицы измерения, что владелец не найден
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший