Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выгрузка и загрузка иерархического справочника
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Lefer
Доброго времени суток. Опишу ситуацию вкратце. С 1с7 мне приходится сталкиваться крайне редко. Все дело в том, что подавляющая часть клиентов на 8. Поэтому к тонкостям 7 я особо не приближен, так что не судите строго.

Вопрос-то следующий - не могу переместить элемент в нужную группую.
Есть две совершенно идентичные конфы. Выгрузка иерархического справочника делается в формат dbf. Загружается соответственно из него же. При выгрузке, кроме необходимых реквизитов, я выгружаю уровень и название родителя элемента справочника:

Файл.NAME32 = Число(Спр.Уровень());
Файл.NAME33 = Строка(Спр.Родитель);

Прочитав описание методов языка 1с7 решил сделать именно так для того, чтобы потом, при загрузке получить возможность установить элементу родителя и перенести его в соответствующую группу. Ничего не получается.

    Если Файл.GROUP = 1 Тогда // это группа
                Спр.НоваяГруппа();
                Спр.Код = Файл.ID;
                Спр.Наименование  = Файл.NAME0;    
                Спр.Записать();
            Иначе                       // это элемент
                Спр.Новый();  
                Спр.Код = Файл.ID;  
                      
            Если Файл.NAME32 > 1 Тогда
                    Спр.Родитель = Файл.NAME33;
            КонецЕсли;
            ЗаполнитьРеквизиты(Спр, Файл);// процедура, где просто подставляются значения в реквезиты элемента справочника
            Спр.Записать();
            КонецЕсли;
Vofka
необходимо зарегистрироваться для просмотра ссылки аналогичная тема, прочтите
Lefer
        Если Спр.НайтиПоКоду(Файл1.ID) = 1 Тогда // элемент существует
            ТекЭл = Спр.ТекущийЭлемент();
            ЗаполнитьРеквизиты(ТекЭл, Файл1);
        Иначе // новый элемент
            Если Файл1.GROUP = 1 Тогда // это группа
                Спр.НоваяГруппа();
                Спр.Код = Файл1.ID;
                Спр.Наименование  = Файл1.NAME0;    
                Спр.Записать();
            Иначе                       // это элемент
                Спр.Новый();
                Спр.Код                  = Файл1.ID;
                РезультатПоиска                  = Спр.НайтиПоНаименованию(Файл1.NAME33);
                Родитель                  = РезультатПоиска.ТекущийЭлемент();
                Спр.Родитель              = Родитель;
                ЗаполнитьРеквизиты(Спр, Файл1);
                Спр.Записать();
            КонецЕсли;
        КонецЕсли;


Сделал изменения в коде после прочтения темы ...ничего не получилось... не выстанавливает родителя!
Vofka
Попробуйте перед
Спр.Родитель = Родитель;


поставить
Спр.Записать();


т.е. как-то так:
        Если Спр.НайтиПоКоду(Файл1.ID) = 1 Тогда // элемент существует
            ТекЭл = Спр.ТекущийЭлемент();
            ЗаполнитьРеквизиты(ТекЭл, Файл1);
        Иначе // новый элемент
            Если Файл1.GROUP = 1 Тогда // это группа
                Спр.НоваяГруппа();
                Спр.Код = Файл1.ID;
                Спр.Наименование  = Файл1.NAME0;    
                Спр.Записать();
            Иначе                       // это элемент
                Спр.Новый();
                Спр.Код                  = Файл1.ID;
                РезультатПоиска                  = Спр.НайтиПоНаименованию(Файл1.NAME33);
                Родитель                  = РезультатПоиска.ТекущийЭлемент();
                Спр.Записать();
                Спр.Родитель              = Родитель;
                ЗаполнитьРеквизиты(Спр, Файл1);
                Спр.Записать();
            КонецЕсли;
        КонецЕсли;
Ardi
РезультатПоиска = Спр1.НайтиПоНаименованию(Файл1.NAME33,0);
Lefer
Выдаёт ошибку:

Родитель = РезультатПоиска.ТекущийЭлемент();
Ошибка следующая - Значение не представляет агрегатный объект (Текущий элемент) ????
Ardi
Спр1.НайтиПоНаименованию(Файл1.NAME33,0);
спр.Родитель =Спр1. ТекущийЭлемент();
Lefer
Цитата(Ardi @ 28.09.10, 14:07) необходимо зарегистрироваться для просмотра ссылки
Спр1.НайтиПоНаименованию(Файл1.NAME33,0);
спр.Родитель =Спр1. ТекущийЭлемент();


Да, спасибо icon_beer17.gif , это помогло справиться с тем, что элементы 2 уровня записываются в нужную папку. Но вот к примеру вылез другой бок - если элемент второго уровня - группа, тогда он не записывает её в папку к родителю. Он создаёт группу вне группы...и с элементами также. Помогите разобраться с уровнями. В 8 всё значительно проще....тут же я совсем потерялся.
Batchir
  
Если Файл1.GROUP = 1 Тогда // это группа
       Спр.НоваяГруппа();
       Спр.Код = Файл1.ID;
       Спр.Наименование  = Файл1.NAME0;    
       Спр.Записать();
Иначе

А где в этом куске кода реализован поиск и установка родителя для группы?
Что написали, то и получаете.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.