О бедном Goto замолвите слово

Среди программистов 1С часто встречаю пренебрежительное отношение к оператору Goto. Оно связано с плохой репутацией этого оператора. Раньше, когда еще не были выработаны принципы программирования, оператор Goto часто запутывал код, превращал его в лапшевидный, в котором было бы сложно разобраться.

Однако в настоящее время оператор Goto сохранен в языке 1С. По сути, он как бы скрашивает несовершенство языка, примерно как бесконечный цикл Пока (истина) служит заменой цикла Do … Until.

Рассмотрим случаи, когда его можно использовать в стиле хорошего кода.

Вложенные циклы

Если нужно выйти из текущего цикла, есть оператор Прервать, а вот если нужно выйти из всех циклов, можно использовать оператор Goto. Такое решение намного понятнее и прозрачнее, чем альтернатвы, когда в каждом цикле проверяется некий флаг, нужно ли его продолжать.

Для А = 1 По 10 Цикл
  Для Б = 1 По 20 Цикл
    Если Ошибка Тогда
    	Перейти ~КонецВсехЦиклов;
    КонецЕсли;
  КонецЦикла;
КонецЦикла;
~КонецВсехЦиклов:

Выход из процедуры

Если перед выходом из процедуры нужно сделать какие-либо дейсвтия и их нужно сделать из нескольких мест, можно использовать оператор Goto. Альтернатива — выносить код в процедуру, но иногда эти действия занимают всего несколько строк, поэтому процедура смотрится более громоздко, чем Goto:

Функция Тест()

	Результат = Новый Структура("ОК, Текст", ложь, "");
	
	Если Ошибка1 Тогда Перейти ~ВыходСОшибками;
	Если Ошибка2 Тогда Перейти ~ВыходСОшибками;
	Если Ошибка3 Тогда Перейти ~ВыходСОшибками;
	
	Результат.ОК = истина;
	Возврат Результат;
	
~ВыходСОшибками;

	Результат.Текст = "Произошла ошибка: " + ОписаниеОшибки();
	Возврат Результат;
	
КонецФункции

А вы используете в своей практике оператор Gogo?