Мне кажется что собака порыла именно в этом куске:
Если КодРодителя<>0 Тогда
Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда
тРодитель = СпрРод.ТекущийЭлемент();
СпрСотр.ИспользоватьРодителя(тРодитель);
Иначе
Сообщить("Не найден родитель с кодом "+ КодРодителя);
КонецЕсли;
Иначе
СпрСотр.ИспользоватьРодителя(тРодитель);// ЗДЕСЬ КАКОЙ тРодитель ? ОТКУДА ?
КонецЕсли;
// А ВОТ ЗДЕСЬ ВОПРОС: ПОЧЕМУ спрСотр ДОЛЖНО БЫТЬ НЕ ПУСТЫМ (ИЛИ ВЫБРАННЫМ) ???
Если ПустоеЗначение(СпрСотр)=0 Тогда //ВЫ ЕГО ГДЕ ИСКАЛИ ТО ???
СпрРод.Удалить();
СпрСотр.Удалить();
Иначе
Если ЭтоГруппа = 1 Тогда
СпрСотр.НоваяГруппа();
СпрСотр.Новый();
Иначе
СпрСотр.Новый();
КонецЕсли;
текИНН = СокрЛП(ДБФ.INN);
СпрСотр.Код =СокрЛП(ДБФ.Code); // А ЕСЛИ НЕ ИСКАЛИ ВОТ ВАМ И КОД НЕ УНИКАЛЬНЫЙ
СпрСотр.Наименование= СокрЛП(ДБФ.Name0);
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)