Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С скопировать элементы справочника со всеми вложенными папками

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

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

КонецЦикла;
   dezss
 
7 - 02.03.20 - 15:01
хм...а что там делать?
Выбираешь все что нужно, например, запросом. Потом обход и копирование.
Если родитель у скопированного "источник", то меняем его на "приемник". Все, профит.
СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
Скопировать (Copy)
Синтаксис:

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

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

Описание:

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

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

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

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

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