вот есть кусок модуля класса:
Для н = 1 по сп.РазмерСписка() Цикл
сообщить(""+н+", "+сп.РазмерСписка()+", "+св+", "+зн);
спУст = СоздатьОбъект("СписокЗначений");
спЗн = ЗначениеСвойства(спУст, сп.ПолучитьЗначение(н), св);
Если спЗн.НайтиЗначение(зн) > 0 Тогда
тРез.НоваяСтрока();
тРез.о = сп.ПолучитьЗначение(н);
тРез.спУст = спУст;
КонецЕсли;
КонецЦикла;
отладочное сообщить порождает следующий текст:
1, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
3, 4, НеОтметки, asdf
... (и т.д зацикленно)
переменная "н" - счетчик цикла - никуда не передается, и нигде не модифицируется. Рекурсивных вызовов тоже нету.