Имя: Пароль:
1C
1C 7.7
v7: OLE ТиС .. перенос справочников
0 __Se24
 
08.02.12
10:33
День добрый ! Господа Гуру , подскажите , из-за чего может не отрабатывать кусок кода ? Переношу справочники номенклатуры из ТиС в другую базу . Делаю срезы по уровню . Первый уровень переносится без проблем , а вот со вторым происходил ерунда ....

//*************************************************************************************
Функция ПолучитьРодителя(СпрТиС)
   Если СпрТиС.Родитель.Выбран()=0 Тогда
       Возврат 0;
   КонецЕсли;
   СпрР=СоздатьОбъект("Справочник.Номенклатура");
   КР=СпрТис.Родитель.Код;
   Если СпрР.НайтиПоКоду(КР,0)=1 Тогда
       СпрРод=СпрР.ТекущийЭлемент();
       СпрР=0;
       Возврат СпрРод;
   Иначе
       Возврат 0;
   КонецЕсли;
   
   Возврат 0;
КонецФункции //ПолучитьРодителя(СпрТиС)
//*************************************************************************************


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

Процедура "ПолучитьРодителя" отрабатывает, находит его , возвращает ссылку на элемент справочника , про при присвоении происходит вот это :
Спр.Родитель=ПолучитьРодителя(СпрТиС);
{D:\1CBASES\DEVELOP\UPR\EXTFORMS\SE\OBR_UPR\TIS\ПЕРЕГРУЗКАСПРАВОЧНИКОВ.ERT(84)}: Неверное значение!
1 Ёпрст
 
08.02.12
10:35
(0) ибо находит элемент, а не группу
2 Ёпрст
 
08.02.12
10:35
а так, всё надо делать за 1 проход..тупо вызывая рекурсивную функцию.
3 1Сергей
 
08.02.12
10:36
Серии кодов (В пределах подчинения/во всём справочнике) одинаковые в обоих базах?
4 __Se24
 
08.02.12
10:47
Эм ...
Блин , Точно , группа веть по другому создается !!!
(0) Спасиб огромный !!!! а-то еще бы часа 2 сидел )))
5 __Se24
 
08.02.12
10:50
Если СпрТиС.ЭтоГруппа()=0 Тогда
   Спр.Новый();
Иначе
   Спр.НоваяГруппа();
КонецЕсли;
Спр.Код=СпрТиС.Код;
........

Теперь все работает )))