Версия для печати темы (https://pro1c.org.ua/index.php?s=ec73f3e146d811de3d0fbef0e4c0410e&showtopic=67815)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ смена родителя для всех

Автор: 4andriy 22.04.25, 13:06

1с 7.7 Бухгалтерия для Украины. Хочу изменить родителя в контрагента, работает:

Процедура групаудал()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда Возврат; КонецЕсли;
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда Возврат; КонецЕсли;
Элемент=СоздатьОбъект("Справочник.Контрагенты");
Элемент.найтиЭлемент(ТекущийЭлемент());
Элемент.Родитель="";
Элемент.Записать();
КонецПроцедуры


захотел поменять родителя у всех, загнал в цикл, но так перестало работать:
Процедура групаудалл()
СписокЭлементов = СоздатьОбъект("СписокЗначений");
Элемент=СоздатьОбъект("Справочник.Контрагенты");
Элемент.ВыбратьЭлементы();
Пока Элемент.ПолучитьЭлемент()=1 Цикл
Элемент.Родитель="";
Элемент.Записать();
КонецЦикла;
КонецПроцедуры

Автор: Profi_1C77 22.04.25, 13:15

Цитата(4andriy @ 22.04.25, 14:06) *
Элемент.Родитель="";


// вне цикла 
ПустойРодитель = ПолучитьПустоеЗначение("Справочник.Контрагенты")

Элемент.ТекщийЭлемент();
Родитель = ПустойРодитель;
// запись

Автор: tibank 25.04.25, 14:32

Скорее всего не работает из-за того, что по умолчанию ВыбратьЭлементы() делает выборку с учетом иерархии, а Вы в цикле иерархию изменяете. В этой ситуации, нужные элементы киньте в список значений, а затем в цикле по списку значений Элемент.НайтиЭлемент(Список.ПолучитьЗначение(й)) и Элемент.Родитель = "";

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua