а вот и код!
простой и правильный, никаких рекурсивных вызовов и поисков по наименованию
ИмяФайла = "C:\вет\1.xls";
Док = ПолучитьCOMОбъект(ИмяФайла);
счСтрок = 2;
Наим = Док.Sheets(1).Cells(счСтрок,1).Value;
ТаблицаРодителей = Новый ТаблицаЗначений;
ТаблицаРодителей.Колонки.Добавить("Ссылка");
//проинициализируем таблицу
Текиндекс = 0;
пока Текиндекс <> 10 цикл
Строка = ТаблицаРодителей.Вставить(Текиндекс);
Строка.Ссылка = Справочники.Номенклатура.ПустаяСсылка();
Текиндекс = Текиндекс + 1;
КонецЦикла;
ЭтоЭлемент = ЛОЖЬ;
Пока ЗначениеЗаполнено(Наим) Цикл
Наименование = Док.Sheets(1).Cells(счСтрок,1).Value;
Код = Док.Sheets(1).Cells(счСтрок,2).Value;
//..пр реквизиты
ЕдиницаДляОтчетов= Док.Sheets(1).Cells(счСтрок,8).Value;
Уровень = Док.Sheets(1).Cells(счСтрок,1).IndentLevel ;
Уровень = Уровень + 2;//потому что начинается уровень с 0, а нулевой у нас это корень
ЭтоЭлемент = ЗначениеЗаполнено(ЕдиницаДляОтчетов) ;
// все уровни - четные, группы идут по убывающей в разрезе иерархии
//поэтому алгоритм такой:
//если это группа - создаем, родителя получаем из таблицы по индекс-2
//записываем или перезаписываем группу в таблицу со своим индексом
//если элемент - создаем, родителя получаем из таблицы по индекс-2
Родитель = ТаблицаРодителей.Получить(уровень-2).ссылка;
Если ЭтоЭлемент Тогда
//создаем элемент
Иначе
//создаем группу
Строка = ТаблицаРодителей.Получить(Уровень);
Строка.Ссылка = Группа.Ссылка;
КОнецЕсли;
счСтрок = счСтрок +1;
Наим = Док.Sheets(1).Cells(счСтрок,1).Value;
КОнецЦикла;