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

1. nadyusha22 15.05.23 12:52 Сейчас в теме
Здравствуйте, есть код:

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


После выполнения этого кода, копируются только папки, а товары остаются без категории, скажите пожалуйста, что я делаю не правильно.
Спасибо.
По теме из базы знаний
Найденные решения
23. spacecraft 15.05.23 14:05 Сейчас в теме
(19) тогда, 2 варианта:
Вариант 1:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
    Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель  Тогда
         ОбъектТовар = Выборка.ПолучитьОбъект();
         ОбъектТовар.Родитель = НовыйРодитель;
         ОбъектТовар.Записать();
    КонецЕсли;
КонецЦикла;
Показать

Выриант 2:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|ГДЕ
		|	Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
	    Если НЕ Выборка.Ссылка = НовыйРодитель  Тогда
         	ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
         	ОбъектТовар.Родитель = НовыйРодитель;
         	ОбъектТовар.Записать();
	    КонецЕсли;
	КонецЦикла;
Показать

Второй вариант более предпочителен.
user1937902; nadyusha22; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. lefthander 15.05.23 13:22 Сейчас в теме
(1)
что я делаю не правильно.
Возможно в этом вся причина?

При иерархической выборке для каждого элемента сначала выбираются элементы, для которых он является родителем, а затем уже выбираются элементы следующего уровня.
nadyusha22; +1 Ответить
6. spacecraft 15.05.23 13:27 Сейчас в теме
(1) а что в итоге нужно? Зачем тут используется ВыбратьИерархически?
nadyusha22; +1 Ответить
7. nadyusha22 15.05.23 13:32 Сейчас в теме
(6)в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку "hello".
16. spacecraft 15.05.23 13:52 Сейчас в теме
(7) перенести так же иерархически, или каждый элемент отдельно?
nadyusha22; +1 Ответить
19. nadyusha22 15.05.23 13:56 Сейчас в теме
23. spacecraft 15.05.23 14:05 Сейчас в теме
(19) тогда, 2 варианта:
Вариант 1:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
Выборка = Справочники.Товары.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
    Если Выборка.УровеньВВыборке() = 0 И НЕ Выборка.Ссылка = НовыйРодитель  Тогда
         ОбъектТовар = Выборка.ПолучитьОбъект();
         ОбъектТовар.Родитель = НовыйРодитель;
         ОбъектТовар.Записать();
    КонецЕсли;
КонецЦикла;
Показать

Выриант 2:
НовыйРодитель = Справочники.Товары.НайтиПоНаименованию("hello");
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура
		|ГДЕ
		|	Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
	    Если НЕ Выборка.Ссылка = НовыйРодитель  Тогда
         	ОбъектТовар = Выборка.Ссылка.ПолучитьОбъект();
         	ОбъектТовар.Родитель = НовыйРодитель;
         	ОбъектТовар.Записать();
	    КонецЕсли;
	КонецЦикла;
Показать

Второй вариант более предпочителен.
user1937902; nadyusha22; +2 Ответить
12. STELEICE 15.05.23 13:47 Сейчас в теме
(1) Группы еще записуются в регистр сведений "ИерархияНоменклатуры". Может дело в этом?
nadyusha22; +1 Ответить
24. karamazoff 111 15.05.23 14:48 Сейчас в теме
(1)Ребята, вас чо, после майских из больниц всех выписали? Решается запросом через отбор по "В ИЕРАРХИИ", не умеете отбирайте весь справочник и в выборе анализируйте и изменяйте объекты, не лишним будет ЗагрузкаДанных = Истина;
nadyusha22; +1 Ответить
2. Naumov 24 15.05.23 13:05 Сейчас в теме
возможно категория назначена для применения на группу
nadyusha22; +1 Ответить
3. Vitaly1C8 15.05.23 13:05 Сейчас в теме
ОбъектТовар = Выборка.ПолучитьОбъект(); // Как это вообще работает ?!

ОбъектТовар = Выборка.<ПолеВыборки>.ПолучитьОбъект();
nadyusha22; +1 1 Ответить
4. spacecraft 15.05.23 13:10 Сейчас в теме
(3) Выборка в данном случае не ВыборкаИзРезультатаЗапроса, а СправочникВыборка. Так что все правильно.
Anchoret; nadyusha22; +2 Ответить
8. user654641_yaga_m 13 15.05.23 13:36 Сейчас в теме
ДД, а не проще всё это сделать запросом с использованием "фильтров"?
9. nadyusha22 15.05.23 13:38 Сейчас в теме
(8)если есть возможность дайте код, спасибо.
10. user654641_yaga_m 13 15.05.23 13:43 Сейчас в теме
(9)Не совсем понятно из постановки вопроса, что надо выбрать? Опишите хотя бы кратко...
11. nadyusha22 15.05.23 13:46 Сейчас в теме
(10)в корне есть Папка/ПодПапка/ПодПодПапка/Товар.
Хочу перенести все это в условную папку "hello".
13. user654641_yaga_m 13 15.05.23 13:47 Сейчас в теме
14. nadyusha22 15.05.23 13:50 Сейчас в теме
(13)вот названия папок: ""Электрика" в ней папка "Кабеля", в ней папка "СИП", в ней "НазваниеТовара".
15. user654641_yaga_m 13 15.05.23 13:52 Сейчас в теме
В запросе есть команда: В ИЕРАРХИИ(<СписокЗначений>). Используем её в условии запроса. Список значений через параметры, даже если она (папка одна). Полученную таблицу перебираем и копируем в новое место! замечание: проверять на "папку" и создавать как папку при переборе!
17. user654641_yaga_m 13 15.05.23 13:52 Сейчас в теме
можно отдельно с указанием родителей (всех)
nadyusha22; +1 Ответить
18. user654641_yaga_m 13 15.05.23 13:54 Сейчас в теме
Родителей перебираем вверх пока ссылка не пустая
nadyusha22; +1 Ответить
20. user654641_yaga_m 13 15.05.23 13:56 Сейчас в теме
Хотя нет вру, родителя только один по идеи - все само организуется - сорь на вскидку - могу ошибаться...
nadyusha22; +1 Ответить
21. user654641_yaga_m 13 15.05.23 13:57 Сейчас в теме
но надо вначале создать все вложенные папки. из запроса сначала выбрать все папки и обработать или запрос с фильтром - только папки, потом второй без папок...
nadyusha22; +1 Ответить
22. user654641_yaga_m 13 15.05.23 14:03 Сейчас в теме
(1)Блин, изначально "повелся"))). А просто в списке номенклатуры разве нельзя скопировать эту ветку в другое место?? Зачем программно?
nadyusha22; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот