Доброго времени суток!
Имеется иерархический справочник. Необходимо скопировать одну из его групп, со всеми вложенными элементами и уровнями.

Под семерку нашел пример:


//************************************************** *****Процедура КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа) СпрНом = СоздатьОбъект("Справочник.Номенклатура "); НовГр = СоздатьОбъект("Справочник.Номенклатура "); СпрНом.ИспользоватьРодителя(СпрТекГруппа); СпрНом.ВыбратьЭлементы(1); Пока СпрНом.ПолучитьЭлемент(1)>0 Цикл Если (СпрНом.ЭтоГруппа() = 1) и (СпрНом.Уровень() - 1 = СпрТекГруппа.Уровень()) Тогда Сообщить(СпрНом); НовГр.ИспользоватьРодителя(СпрНовГруппа); НовГр.НоваяГруппа(); НовГр.Наименование = СпрНом.Наименование; НовГр.Записать(); КопированиеГруппСпр(СпрНом,НовГр); КонецЕсли; КонецЦикла;КонецПроцедуры//************************************************** ****Процедура Сформировать() КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа);КонецПроцедуры//************************************************** ****Где:СпрТекГруппа - группа справочника откуда нужно выполнять переносСпрНовГруппа - группа справочника куда нужно выполнять перенос

Попытался переделать его под восьмерку, но пока ничего не выходит :(

Вот что получилось:


Перем СпрТекГруппа,СпрНовГруппа;Процедура КнопкаВыполнитьНажатие(Кнопка)СпрТекГруппа = Справочники.Номенклатура.НайтиПоКоду("0 11");КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа);КонецПроцедурыПроцедура КопированиеГруппСпр(СпрТекГруппа,СпрНовГруппа)СпрНом = Справочники.Номенклатура;НовГр = Справочники.Номенклатура;;Выборка = СпрНом.Выбрать(СпрТекГруппа);Пока Выборка.Следующий() Цикл //Если (Выборка.ЭтоГруппа() = 1) и (Выборка.Уровень() - 1 = СпрТекГруппа.Уровень()) Тогда Если (Выборка.ЭтоГруппа) Тогда Сообщить(СпрНом); НовЭл = НовГр.СоздатьГруппу(); //НовЭл.Родитель(СпрНовГрупп а); НовЭл.Наименование = Выборка.Наименование; НовЭл.Записать(); Сообщить(НовЭл.Код); КопированиеГруппСпр(Выборка,НовЭл); КонецЕсли; КонецЦикла;КонецПроцедуры
Цикл проходит один раз, создается новая группа и уже на втором кругу цикла вываливает ошибку:


{Форма.Форма(12)}: Ошибка при вызове метода контекста (Выбрать): Несоответствие типов (параметр номер '1')Выборка = СпрНом.Выбрать(СпрТекГруппа);по причине:Несоответствие типов (параметр номер '1')
Да и с условием этим


Если (Выборка.ЭтоГруппа() = 1) и (Выборка.Уровень() - 1 = СпрТекГруппа.Уровень())
я никак не разберусь :(