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


Скопировать справочник Номенклатура

Скопировать справочник Номенклатура
Я
   program345
 
02.02.18 - 09:21
День добрый!
Есть задача Копирование папки справочника, со всеми элементами внутри.

Данный код работает только для групп, какую строчку дописать чтобы элементы тоже копировались
Благодарю всех неравнодушных.

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос("ВЫБРАТЬ
    |    БизнесПроекты.Ссылка
    |ИЗ
    |    Справочник.БизнесПроекты КАК БизнесПроекты
    |ГДЕ
    |    БизнесПроекты.Ссылка В ИЕРАРХИИ(&Группа)"
    );
    Запрос.УстановитьПараметр("Группа", Откуда);
    Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    СЗ = Новый СписокЗначений;//Будем запихивать туда родителей

    Пока Результат.Следующий() Цикл
        ТекСпр = Результат.Ссылка.ПолучитьОбъект();
        Если ТекСпр.Родитель = Откуда.Родитель Тогда//Копируем корень

            элементСправочника = ТекСпр.Скопировать();
            элементСправочника.Родитель = Куда;
            элементСправочника.Записать();
            СЗ.Добавить(элементСправочника.Ссылка);  //Запихали корневого родителя

        Иначе                                        //Копируем все остальное

            элементСправочника = ТекСпр.Скопировать();
            элементСправочника.Родитель = СЗ[СЗ.Количество()-1].Значение;
            элементСправочника.Записать();
            Если ТекСпр.ЭтоГруппа  Тогда
                СЗ.Добавить(элементСправочника.Ссылка);//А здесь запихиваем всех остальных родителей

            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
 
 
   lodger
 
1 - 02.02.18 - 09:31
у вас текст вопроса и текст программы противоречат друг другу. уточнений не добавите?
   catena
 
2 - 02.02.18 - 09:31
элементСправочника.Родитель = СЗ[СЗ.Количество()-1].Значение;

А если на одном уровне будет несколько групп с подгруппами?
   igorPetrov
 
3 - 02.02.18 - 09:32
(0) Вы уж разберитесь чего хотите.
   Lexey_
 
4 - 02.02.18 - 09:33
(3) он хочет дописать одну строчку и чтоб всё заработало
   igorPetrov
 
5 - 02.02.18 - 09:35
(4) а, ну тогда все понятно. Всё просто:

Сообщить("Всё хорошо. Всё работает.");
   program345
 
6 - 02.02.18 - 09:42
(3) нужно Копирование папки справочника с подчиненными ей папками и элементами.
   hhhh
 
7 - 02.02.18 - 09:58
(6) наверно как-то так
    Пока Результат.Следующий() Цикл
       Если ТекСпр.Родитель = Откуда.Родитель Тогд//Копируем корень


            элементСправочника = ТекСпр.Скопировать();
            элементСправочника.Родитель = Куда;
            элементСправочника.Записать();
//Запихали корневого родителя


        Иначе    
           ТекСпр = Результат.Ссылка.ПолучитьОбъект();
 
           элементСправочника = ТекСпр.Скопировать();
           элементСправочника.Родитель =  
        Справочники.Номенклатура.НайтиПоНаименованию(ТекСпр.Родитель.Наименование, Куда);
        элементСправочника.Записать();
       КонецЕСли;
    КонецЦикла;
   hhhh
 
8 - 02.02.18 - 09:59
(7) ++  НайтиПоНаименованию(ТекСпр.Родитель.Наименование,, Куда);

или сколько там запятых, ну ты понял
   program345
 
9 - 02.02.18 - 10:01
(8) спасибо, попробуемс
   Сияющий в темноте
 
10 - 02.02.18 - 10:21
наверное,нужна или рекурсия или очередь,что быстрее,определяется опытным путем
очередь занимает меньше памяти,а рекурсия понятнее
 
 Рекламное место пустует
   program345
 
11 - 02.02.18 - 10:38
https://s.mail.ru/AqBm/5BJmkrLpo сделал такое для примера
https://s.mail.ru/8gz5/BZWBZnr6v скопировалось не все
   program345
 
12 - 02.02.18 - 10:39
тест7 это папка "Куда"

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