Упс... так в начале все так и работало... Как тогда понимать заглавие ветки и первое сообщение?
Для начала...
1. Номенклатура выбирается вся - хотя, помимо нужной(имеющей рецептуру), там наверняка еще куча всякого стороннего(в данном случае) хлама.
2. Нет проверок "а не группа ли это?" и "а не помечено ли оно на удаление". Для всего упорно пытаемся найти подчиненные.
3. Для каждой Номенклатуры создаем объект. Слишком жирно для нее. Создать вне цикла.
4. Пытаемся получить элемент из, возможно пустой выборки, хотя
Если СпрР.ВыбратьЭлементы() = 1 Тогда
//здесь перебираем и обрабатываем выбранное
КонецЕсли;
легко избавляет от тщетных попыток получить элемент там где его нет.
И вообще, я бы переебирал СпрР, запихивал бы его в ТЗ вместе с СпрР.ТекущийЭлемент().Владелец. Затем свернуть по Владельцам с суммированием Себ и выводить на печать уже из этой ТЗ.
А может все можно получить одним запросом?
Вопчем, озвучивай задачу, так быстрее получится