Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: смена родителя для всех
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
4andriy
1с 7.7 Бухгалтерия для Украины. Хочу изменить родителя в контрагента, работает:
Процедура групаудал()
Если ПустоеЗначение(ТекущийЭлемент())=1 Тогда Возврат; КонецЕсли;
Если ТекущийЭлемент().ЭтоГруппа()=1 Тогда Возврат; КонецЕсли;
Элемент=СоздатьОбъект("Справочник.Контрагенты");
Элемент.найтиЭлемент(ТекущийЭлемент());
Элемент.Родитель="";
Элемент.Записать();
КонецПроцедуры


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


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

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