Имя: Пароль:
1C
1С v8
1С скопировать элементы справочника со всеми вложенными папками
0 andrey i1c
 
02.03.20
14:38
Хочу сделать обработку, есть "источник" где мы выбираем папку справочника номенклатуры. И "приемник" тут мы выбираем папку куда скопируем все элементы и вложенные папки выбранного "источника". Задача была бы просто если не было вложенных папок, а только элементы, тогда можно было просто сменить родителя элементов и записать. Но как скопировать все элементы выбранной папки в другую папку в рамках одного справочника со всеми вложенными папками?
1 vicof
 
02.03.20
14:40
есть такое понятие, как рекурсия
2 unenu
 
02.03.20
14:43
если без рекурсии, то записать сначала и группы и элементы в плоский список, а на 2-м проходе записать поле родитель.
с рекурсией гемор - для студентов с рогатками на пустом месте.
почти всегда пишу в два прохода без рекурсий и минимум затыков.
3 Garykom
 
гуру
02.03.20
14:50
(0) Скопировать или переместить?

И в 1С иерархия групп и/или элементов какие еще "папки"?
4 mikecool
 
02.03.20
14:52
(3) +1
для перемещения - можно и мышой кликнуть
5 andrey i1c
 
02.03.20
14:54
(3) скопировать
6 Garykom
 
гуру
02.03.20
14:57
(5)
НоменклатураВыборка = Справочники.Номенклатура.ВыбратьИерархически(Источник);
Пока НоменклатураВыборка.Следующий() Цикл
// ...
КонецЦикла;
7 dezss
 
02.03.20
15:01
хм...а что там делать?
Выбираешь все что нужно, например, запросом. Потом обход и копирование.
Если родитель у скопированного "источник", то меняем его на "приемник". Все, профит.

СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Скопировать (Copy)
Синтаксис:

Скопировать()
Возвращаемое значение:

Тип: СправочникОбъект.<Имя справочника>.

Описание:

Создает новый элемент справочника копированием существующего.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Использование метода не приводит к записи созданного объекта в базу данных.
8 goodprog
 
02.03.20
15:03
(6) (7) ДА я думаю у человека все проблема в обходе дерева
9 dezss
 
02.03.20
15:03
(7) Ну и с группами точно так же. Всегда подменяешь родителя на родителя в "приемнике". Тут вариантов куча.
10 goodprog
 
02.03.20
15:03
ХОтя пример из (3) показывает как и без него можно