Здравствуйте, есть код:

```1c
    НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
    Выборка = Справочники.Товары.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    ОбъектТовар = Выборка.ПолучитьОбъект();
    Если ОбъектТовар.Родитель <> НовыйРодитель Тогда
    ОбъектТовар.Родитель = НовыйРодитель;
    ОбъектТовар.Записать();
    КонецЕсли;
    КонецЦикла;
```

После выполнения этого кода, копируются только папки, а товары остаются без категории, скажите пожалуйста, что я делаю не правильно.
Спасибо.
---
тогда, 2 варианта:
Вариант 1:

```1c
    НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
    Выборка = Справочники.Товары.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель Тогда
    ОбъектТовар = Выборка.ПолучитьОбъект();
    ОбъектТовар.Родитель = НовыйРодитель;
    ОбъектТовар.Записать();
    КонецЕсли;
    КонецЦикла;
```

Выриант 2:

```1c
    НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() Цикл
    Если НЕ Выборка.Ссылка = НовыйРодитель Тогда
    ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
    ОбъектТовар.Родитель = НовыйРодитель;
    ОбъектТовар.Записать();
    КонецЕсли;
    КонецЦикла;
```

Второй вариант более предпочителен.
---
что я делаю не правильно. Возможно в этом вся причина?

При иерархической выборке для каждого элемента сначала выбираются элементы, для которых он является родителем, а затем уже выбираются элементы следующего уровня.
---
а что в итоге нужно? Зачем тут используется ВыбратьИерархически?
---
в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку "hello".
---
перенести так же иерархически, или каждый элемент отдельно?
---
перенести как есть
---
тогда, 2 варианта:
Вариант 1:

```1c
    НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
    Выборка = Справочники.Товары.ВыбратьИерархически();
    Пока Выборка.Следующий() Цикл
    Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель Тогда
    ОбъектТовар = Выборка.ПолучитьОбъект();
    ОбъектТовар.Родитель = НовыйРодитель;
    ОбъектТовар.Записать();
    КонецЕсли;
    КонецЦикла;
```

Выриант 2:

```1c
    НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    | Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() Цикл
    Если НЕ Выборка.Ссылка = НовыйРодитель Тогда
    ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
    ОбъектТовар.Родитель = НовыйРодитель;
    ОбъектТовар.Записать();
    КонецЕсли;
    КонецЦикла;
```

Второй вариант более предпочителен.
---
Группы еще записуются в регистр сведений "ИерархияНоменклатуры". Может дело в этом?
---
Ребята, вас чо, после майских из больниц всех выписали? Решается запросом через отбор по "В ИЕРАРХИИ", не умеете отбирайте весь справочник и в выборе анализируйте и изменяйте объекты, не лишним будет ЗагрузкаДанных = Истина;
---
возможно категория назначена для применения на группу
---
ОбъектТовар = Выборка.ПолучитьОбъект(); // Как это вообще работает ?!

 ОбъектТовар = Выборка.<ПолеВыборки>.ПолучитьОбъект();
---
Выборка в данном случае не ВыборкаИзРезультатаЗапроса, а СправочникВыборка. Так что все правильно.
---
ДД, а не проще всё это сделать запросом с использованием "фильтров"?
---
если есть возможность дайте код, спасибо.
---
Не совсем понятно из постановки вопроса, что надо выбрать? Опишите хотя бы кратко...
---
в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку "hello".
---
"Папка" - она одна?
---
вот названия папок: ""Электрика" в ней папка "Кабеля", в ней папка "СИП", в ней "НазваниеТовара".
---
В запросе есть команда: В ИЕРАРХИИ(<СписокЗначений>). Используем её в условии запроса. Список значений через параметры, даже если она (папка одна). Полученную таблицу перебираем и копируем в новое место! замечание: проверять на "папку" и создавать как папку при переборе!
---
можно отдельно с указанием родителей (всех)
---
Родителей перебираем вверх пока ссылка не пустая
---
Хотя нет вру, родителя только один по идеи - все само организуется - сорь на вскидку - могу ошибаться...
---
но надо вначале создать все вложенные папки. из запроса сначала выбрать все папки и обработать или запрос с фильтром - только папки, потом второй без папок...
---
Блин, изначально "повелся"))). А просто в списке номенклатуры разве нельзя скопировать эту ветку в другое место?? Зачем программно?