Имя: Пароль:
1C
 
Загрузка номенклатуры с несколькими уровнями родителей
0 Обфускация
 
28.02.18
08:07
Делаю загрузку номенклатуры из другой базы. Первый уровень у меня загружался нормально. Потом начинаю загружать второй уровень и выходит ошибка, что поле родитель не доступно для записи. Как это правильно реализовать?

        Запрос1=новый запрос;
        запрос1.Текст="ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Ссылка,
        |    Номенклатура.Родитель.Родитель КАК РодительРодитель,
        |    Номенклатура.Родитель.Родитель.Родитель КАК РодительРодительРодитель
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ИСТИНА
        |    И Номенклатура.Наименование = &Наименование";
        запрос1.УстановитьПараметр("Наименование",строка(группа));              
        ИтогГрупп=запрос1.Выполнить().Выгрузить();    
        Если  ИтогГрупп.Количество()>0 тогда
            Элм.Родитель = ИтогГрупп[0].ссылка;
            
        иначе
            ГруппаСПР=справочники.Номенклатура.СоздатьГруппу();
            группаСПР.Наименование= группа;
            группаСПР.Записать();
            Элм.Родитель = группаСПР.Ссылка;
        конецесли;    
        
        Запрос2=новый запрос;
        Запрос2.Текст="ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Ссылка,
        |    Номенклатура.Родитель.Родитель КАК РодительРодитель,
        |    Номенклатура.Родитель.Родитель.Родитель КАК РодительРодительРодитель
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.ЭтоГруппа = ИСТИНА
        |    И Номенклатура.Наименование = &Наименование";
        Запрос2.УстановитьПараметр("Наименование",строка(группа2));              
        ИтогГрупп2=Запрос2.Выполнить().Выгрузить();    
        Если  ИтогГрупп2.Количество()>0 тогда
            Элм.Родитель.Родитель = ИтогГрупп2[0].ссылка;
            
        иначе
            ГруппаСПР2=справочники.Номенклатура.СоздатьГруппу();
            группаСПР2.Наименование= группа2;
            группаСПР2.Записать();
            Элм.Родитель.Родитель = группаСПР2.Ссылка;
        конецесли;    

        
        Элм.Записать();
1 asady
 
28.02.18
08:08
(0) получай объект родителя и устанавливай ему родителя.родителя
2 catena
 
28.02.18
08:09
Элм.Родитель - ссылка. Для записи нужен объект.
3 Обфускация
 
28.02.18
08:13
(1)
да, проблема была в этом, спасибо
4 lodger
 
28.02.18
08:24
Неправильно ты, дядя Фёдор, бутерброд ешь...
5 Обфускация
 
28.02.18
08:27
(4)
напиши весь код за меня, если такой умный
6 Сияющий в темноте
 
28.02.18
08:48
(5) А ты ему заплати-он и напишет