// видит только Хлеб и Молоко — строки верхнего уровня
Для Каждого Строка Из Дерево.Строки Цикл
Сообщить(Строка.Наименование);
КонецЦикла;Для Каждого Строка Из Дерево.Строки Цикл обходит только строки той коллекции, к которой обратились, — один уровень. Вложенные строки (Строка.Строки) в этот обход не попадают, как и у обычного Для Каждого по Структуре или Массиву — вложенная коллекция для платформы такая же самостоятельная коллекция, её нужно обойти отдельно.
Обойти всё дерево целиком — рекурсивная процедура, вызывающая сама себя для Строки каждой строки:
Процедура ОбойтиДерево(Строки)
Для Каждого Строка Из Строки Цикл
Сообщить(Строка.Наименование);
Если Строка.Строки.Количество() > 0 Тогда
ОбойтиДерево(Строка.Строки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ОбойтиДерево(Дерево.Строки);Готового «обойти рекурсивно одним вызовом» метода в самом языке нет — либо своя рекурсивная процедура, как выше, либо, если нужен не обход как таковой, а просто плоский список всех строк дерева, — НайтиСтроки() с пустой структурой отбора и Истина третьим параметром: без единого условия в структуре под отбор подходит любая строка.
ВсеСтроки = Дерево.Строки.НайтиСтроки(Новый Структура, Истина);