|
Скопировать справочник Номенклатура | ☑ | ||
---|---|---|---|---|
0
program345
02.02.18
✎
09:21
|
День добрый!
Есть задача Копирование папки справочника, со всеми элементами внутри. Данный код работает только для групп, какую строчку дописать чтобы элементы тоже копировались Благодарю всех неравнодушных. Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос("ВЫБРАТЬ | БизнесПроекты.Ссылка |ИЗ | Справочник.БизнесПроекты КАК БизнесПроекты |ГДЕ | БизнесПроекты.Ссылка В ИЕРАРХИИ(&Группа)" ); Запрос.УстановитьПараметр("Группа", Откуда); Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); СЗ = Новый СписокЗначений; //Будем запихивать туда родителей Пока Результат.Следующий() Цикл ТекСпр = Результат.Ссылка.ПолучитьОбъект(); Если ТекСпр.Родитель = Откуда.Родитель Тогда //Копируем корень элементСправочника = ТекСпр.Скопировать(); элементСправочника.Родитель = Куда; элементСправочника.Записать(); СЗ.Добавить(элементСправочника.Ссылка); //Запихали корневого родителя Иначе //Копируем все остальное элементСправочника = ТекСпр.Скопировать(); элементСправочника.Родитель = СЗ[СЗ.Количество()-1].Значение; элементСправочника.Записать(); Если ТекСпр.ЭтоГруппа Тогда СЗ.Добавить(элементСправочника.Ссылка); //А здесь запихиваем всех остальных родителей КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
lodger
02.02.18
✎
09:31
|
у вас текст вопроса и текст программы противоречат друг другу. уточнений не добавите?
|
|||
2
catena
02.02.18
✎
09:31
|
элементСправочника.Родитель = СЗ[СЗ.Количество()-1].Значение;
А если на одном уровне будет несколько групп с подгруппами? |
|||
3
igorPetrov
02.02.18
✎
09:32
|
(0) Вы уж разберитесь чего хотите.
|
|||
4
Lexey_
02.02.18
✎
09:33
|
(3) он хочет дописать одну строчку и чтоб всё заработало
|
|||
5
igorPetrov
02.02.18
✎
09:35
|
(4) а, ну тогда все понятно. Всё просто:
Сообщить("Всё хорошо. Всё работает."); |
|||
6
program345
02.02.18
✎
09:42
|
(3) нужно Копирование папки справочника с подчиненными ей папками и элементами.
|
|||
7
hhhh
02.02.18
✎
09:58
|
(6) наверно как-то так
Пока Результат.Следующий() Цикл Если ТекСпр.Родитель = Откуда.Родитель Тогда//Копируем корень элементСправочника = ТекСпр.Скопировать(); элементСправочника.Родитель = Куда; элементСправочника.Записать(); //Запихали корневого родителя Иначе ТекСпр = Результат.Ссылка.ПолучитьОбъект(); элементСправочника = ТекСпр.Скопировать(); элементСправочника.Родитель = Справочники.Номенклатура.НайтиПоНаименованию(ТекСпр.Родитель.Наименование, Куда); элементСправочника.Записать(); КонецЕСли; КонецЦикла; |
|||
8
hhhh
02.02.18
✎
09:59
|
(7) ++ НайтиПоНаименованию(ТекСпр.Родитель.Наименование,, Куда);
или сколько там запятых, ну ты понял |
|||
9
program345
02.02.18
✎
10:01
|
(8) спасибо, попробуемс
|
|||
10
Сияющий в темноте
02.02.18
✎
10:21
|
наверное,нужна или рекурсия или очередь,что быстрее,определяется опытным путем
очередь занимает меньше памяти,а рекурсия понятнее |
|||
11
program345
02.02.18
✎
10:38
|
https://s.mail.ru/AqBm/5BJmkrLpo сделал такое для примера
https://s.mail.ru/8gz5/BZWBZnr6v скопировалось не все |
|||
12
program345
02.02.18
✎
10:39
|
тест7 это папка "Куда"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |