Имя: Пароль:
1C
 
Непонятное поведение оператора Возврат при обходе дерева
0 KDS
 
25.03.23
23:15
Добрый вечер. Непонятное поведение оператора Возврат. Перебираю строки дерева значений. После того как отладчик доходит до Возврат НайденнаяСтрока; - не происходит завершения функции, а происходит переход на строку ОбходСтрокиДерева(Стр, СтрокаДерева);. Что я делаю не так?

&НаСервере
Функция ОбходСтрокиДерева(ДеревоЗаданий, СтрокаДерева)
	
	НайденнаяСтрока = Неопределено;
	Для каждого Стр Из ДеревоЗаданий.Строки Цикл
		Если Стр.БМ_Группа Тогда
			ОбходСтрокиДерева(Стр, СтрокаДерева);
		КонецЕсли;
		Для лкИндекс = 0 По 10000 Цикл
			лкСтр = ЗаданияНаПеревозкуПланируемые.НайтиПоИдентификатору(лкИндекс);
			Если лкСтр <> Неопределено и лкСтр["Ссылка"] = Стр.Ссылка Тогда
				НайденнаяСтрока = лкСтр;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Прервать;
	КонецЦикла;

	Возврат НайденнаяСтрока;
КонецФункции
1 Волшебник
 
25.03.23
23:15
Потому что функция рекурсивная
2 KDS
 
25.03.23
23:19
(1), Ок. И как её прервать? )
3 Волшебник
 
25.03.23
23:27
(2) Надо сделать столько Возвратов, сколько было вызовов функций. Или вызвать исключение.

Ваш Кэп.
4 KDS
 
25.03.23
23:32
(3), Большое спасибо, Кэп! )
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший