Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Перенос справочника

v7: Перенос справочника
Я
   Garikus
 
10.05.18 - 18:25
Доброго времени суток, просьба не кидаться тяжелыми предметами, с 77 уже как 5 лет не занимался.
Подскажите где косяк?
Имеется БП 4.5
Требуется материалы перенести в номенклатуру

 Спр = СоздатьОбъект("Справочник.Материалы");
  Спр.ВыбратьЭлементы();
  СпрСотр = СоздатьОбъект("Справочник.Номенклатура");     
  Пока Спр.ПолучитьЭлемент() = 1 Цикл
    Если Спр.ТекущийЭлемент().ЭтоГруппа()=0 Тогда
    //  Если Спр.ТекущийЭлемент().ЭтоГруппа()=0 Тогда 

       
    СпрСотр.Новый();
    СпрСотр.Наименование = Спр.Наименование;
    СпрСотр.Записать();
    СпрСотр.ПолнНаименование = Спр.Наименование;
    
    Если СпрСотр.НайтиПоНаименованию(спр.Родитель,Спр.Родитель.Код) = 1 тогда  
            СпрСотр.Родитель =СпрСотр.ТекущийЭлемент();
    КонецЕсли;
    едИзм = СоздатьОбъект("Справочник.ЕдиницыИзмерений");
    Если едИзм.НайтиПоНаименованию(спр.ЕдиницаИзмерения) = 1 тогда
    СпрСотр.ЕдиницаИзмерения =едИзм.ТекущийЭлемент() ;
    КонецЕсли;
     СпрСотр.Цена = Спр.Цена;
    СпрСотр.ТипТовара = Перечисление.ТипыТоваров.Собственный;
    СпрСотр.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар;
    СпрСотр.Записать();
    сообщить("Наименование "+спр.Наименование+" Код "+спр.код);
КонецЕсли;
Получаю в конце элемент не выбран
 
 
   Amra
 
1 - 10.05.18 - 18:28
Если СпрСотр.НайтиПоНаименованию(спр.Родитель,Спр.Родитель.Код) = 1 тогда  
            СпрСотр.Родитель =СпрСотр.ТекущийЭлемент();
    КонецЕсли;

Это что вообще? И 7.7 тут не причем
   Garikus
 
2 - 10.05.18 - 18:30
(1) В номенклатуре есть уже созданные папки 1 в 1 Метериалы = номенклатура
   Ёпрст
 
3 - 10.05.18 - 18:31
(0) ищи родителя в другой переменной, ну и вот это перепиши

Спр.ТекущийЭлемент().ЭтоГруппа()=0
   Ёпрст
 
4 - 10.05.18 - 18:35
ну и если лень использовать рекурсию, то, в начале создаешь все элементы и группы в одну кучку, затем делаешь еще один проход и назначаешь родителей.

+ при создании элементов и групп проверяешь сперва, что такого еще нет.
   Ёпрст
 
5 - 10.05.18 - 18:41
Типа того:
 СпрМатериалы = СоздатьОбъект("Справочник.Материалы");
 СпрМатериалы.ВыбратьЭлементы();
  СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");     
  Пока СпрМатериалы .ПолучитьЭлемент() = 1 Цикл
     Если СпрНоменклатура.НайтиПоКоду(СпрМатериалы.Код,1)=0 Тогда
     Если СпрМатериалы.ЭтоГруппа()=1 Тогда
         СпрНоменклатура.НоваяГруппа();
         СпрНоменклатура.Код = СпрМатериалы.Код;
         СпрНоменклатура.Наименование= СпрМатериалы.Наименование;
         СпрНоменклатура.Записать();
      Иначе
         СпрНоменклатура.Новый();
         СпрНоменклатура.Код = СпрМатериалы.Код;
         СпрНоменклатура.Наименование= СпрМатериалы.Наименование;
//         ......остальные  реквизиты

         СпрНоменклатура.Записать();
      КонецЕсли;
КонецЕсли;
//далее еще одна выборка и просто заполнить реквизит Родитель, ищя его так-же по коду.
Усё
   Ёпрст
 
6 - 10.05.18 - 18:42
ну или ищи всё по наименованию, если уверен, что они у тя уникальные во всём справочнике
   Garikus
 
7 - 10.05.18 - 18:46
(6) Громадное спасибо

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует