Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 июл 2024, 05:01

Смена родителя номенклатуры

Автор maxxi, 15 мая 2023, 12:39

0 Пользователей и 1 гость просматривают эту тему.

maxxi

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

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

LexaK

Выборка = Справочники.Товары.ВыбратьИерархически();
так это вроде и выбирает как раз верхний уровень справочника, ваши папки
попробуйте такую команду
Выборка = Справочники.Товары.Выбрать();
если помогло нажмите: Спасибо!

maxxi

LexaK, в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку "hello".

maxxi

Цитата: LexaK от 15 мая 2023, 13:23Выборка = Справочники.Товары.Выбрать();

Выдает ошибку "Зацикливание Уровней".

LexaK

Цитата: maxxi от 15 мая 2023, 13:37Выдает ошибку "Зацикливание Уровней".
ааа, ну да, по вашему коду, вы и свою новую папку тоже пытаетесь поместить саму себя, добавьте еще проверку, примерно так
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.выбрать(); //ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка = НовыйРодитель Тогда
//это сама папка "hello", пропускаем
Продолжить;
КонецЕсли;
Если Выборка.Родитель <> НовыйРодитель Тогда
//смена родителя
     ОбъектТовар = Выборка.ПолучитьОбъект();
         ОбъектТовар.Родитель = НовыйРодитель;
         ОбъектТовар.Записать();
    КонецЕсли;
КонецЦикла;
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск