Здравствуйте, есть код:
После выполнения этого кода, копируются только папки, а товары остаются без категории, скажите пожалуйста, что я делаю не правильно.
Спасибо.
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
ОбъектТовар = Выборка.ПолучитьОбъект();
Если ОбъектТовар.Родитель <> НовыйРодитель Тогда
ОбъектТовар.Родитель = НовыйРодитель;
ОбъектТовар.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьПосле выполнения этого кода, копируются только папки, а товары остаются без категории, скажите пожалуйста, что я делаю не правильно.
Спасибо.
По теме из базы знаний
- Всякие полезности
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Алгоритмы с решениями для экзамена Специалист УТ 11.1
- Партионный учет ФИФО ЛИФО. Остатки поступлений, пример получения данных партионного учета, если его нет. Вернуть остатки партий. Списать по срокам годности ФИФО ЛИФО
- Распределение товаров поступлений по направлениям деятельности с кастомной настройкой
Найденные решения
(19) тогда, 2 варианта:
Вариант 1:
Выриант 2:
Второй вариант более предпочителен.
Вариант 1:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель Тогда
ОбъектТовар = Выборка.ПолучитьОбъект();
ОбъектТовар.Родитель = НовыйРодитель;
ОбъектТовар.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьВыриант 2:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ Выборка.Ссылка = НовыйРодитель Тогда
ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
ОбъектТовар.Родитель = НовыйРодитель;
ОбъектТовар.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьВторой вариант более предпочителен.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(19) тогда, 2 варианта:
Вариант 1:
Выриант 2:
Второй вариант более предпочителен.
Вариант 1:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель Тогда
ОбъектТовар = Выборка.ПолучитьОбъект();
ОбъектТовар.Родитель = НовыйРодитель;
ОбъектТовар.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьВыриант 2:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ Выборка.Ссылка = НовыйРодитель Тогда
ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
ОбъектТовар.Родитель = НовыйРодитель;
ОбъектТовар.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьВторой вариант более предпочителен.
В запросе есть команда: В ИЕРАРХИИ(<СписокЗначений>). Используем её в условии запроса. Список значений через параметры, даже если она (папка одна). Полученную таблицу перебираем и копируем в новое место! замечание: проверять на "папку" и создавать как папку при переборе!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот