Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка и загрузка иерархического справочника          
Lefer Подменю пользователя
сообщение 28.09.10, 10:02
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Доброго времени суток. Опишу ситуацию вкратце. С 1с7 мне приходится сталкиваться крайне редко. Все дело в том, что подавляющая часть клиентов на 8. Поэтому к тонкостям 7 я особо не приближен, так что не судите строго.

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

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

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

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


Signature
It's the end of the world as we know it and I feel fine

Vofka Подменю пользователя
сообщение 28.09.10, 10:16
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Вот аналогичная тема, прочтите

Lefer Подменю пользователя
сообщение 28.09.10, 11:31
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

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


Сделал изменения в коде после прочтения темы ...ничего не получилось... не выстанавливает родителя!


Signature
It's the end of the world as we know it and I feel fine

Vofka Подменю пользователя
сообщение 28.09.10, 11:34
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Попробуйте перед
Спр.Родитель = Родитель;


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


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

Ardi Подменю пользователя
сообщение 28.09.10, 11:47
Сообщение #5

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

РезультатПоиска = Спр1.НайтиПоНаименованию(Файл1.NAME33,0);


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Lefer Подменю пользователя
сообщение 28.09.10, 11:55
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Выдаёт ошибку:

Родитель = РезультатПоиска.ТекущийЭлемент();
Ошибка следующая - Значение не представляет агрегатный объект (Текущий элемент) ????


Signature
It's the end of the world as we know it and I feel fine

Ardi Подменю пользователя
сообщение 28.09.10, 12:07
Сообщение #7

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Спр1.НайтиПоНаименованию(Файл1.NAME33,0);
спр.Родитель =Спр1. ТекущийЭлемент();


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Спасибо сказали: Lefer,

Lefer Подменю пользователя
сообщение 28.09.10, 12:27
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Цитата(Ardi @ 28.09.10, 14:07) *
Спр1.НайтиПоНаименованию(Файл1.NAME33,0);
спр.Родитель =Спр1. ТекущийЭлемент();


Да, спасибо icon_beer17.gif , это помогло справиться с тем, что элементы 2 уровня записываются в нужную папку. Но вот к примеру вылез другой бок - если элемент второго уровня - группа, тогда он не записывает её в папку к родителю. Он создаёт группу вне группы...и с элементами также. Помогите разобраться с уровнями. В 8 всё значительно проще....тут же я совсем потерялся.


Signature
It's the end of the world as we know it and I feel fine

Batchir Подменю пользователя
сообщение 28.09.10, 13:01
Сообщение #9

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

  
Если Файл1.GROUP = 1 Тогда // это группа
       Спр.НоваяГруппа();
       Спр.Код = Файл1.ID;
       Спр.Наименование  = Файл1.NAME0;    
       Спр.Записать();
Иначе

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 23:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!