Суть идеи предельно проста - указать в качестве обработчика результата диалога ту же процедуру, в которой происходит вызов диалога.
Самый серьезный недостаток, возникающий при этом - ограничения на состав параметров процедуры, которые должны соответствовать составу параметров процедуры-обработчика. Все входные данные для такой процедуры придется передавать через структуру дополнительных параметров (второй параметр обработчика).
Очевидны также и другие сопутствующие особенности такой реализации:
- процедура должна быть экспортной
- все данные, которые необходимо передавать между этапами, нужно также помещать в структуру дополнительных параметров
- каждый очередной этап выполнения начинается с анализа ответа пользователя на предыдущий диалог и завершается вызовом очередного диалога
Примерная реализация подхода:
// ВЦОСНИК - Выполнить Цепочку Операций С Немодальным Интерактивом Компактно
Процедура ВЦОСНИК(Значение = Неопределено, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = Новый Структура("НомерЭтапа", 0);
КонецЕсли;
ДопПараметры.НомерЭтапа = ДопПараметры.НомерЭтапа + 1;
Если ДопПараметры.НомерЭтапа = 1 Тогда
// начало первой операции
...
Показать...(Новый ОписаниеОповещения("ВЦОСНИК", ЭтаФорма, ДопПараметры), ...);
ИначеЕсли ДопПараметры.НомерЭтапа = 2 Тогда
// анализ ответа пользователя в диалоге из предыдущей операции и начало
// следующей операции
.....................................
Показать...(Новый ОписаниеОповещения("ВЦОСНИК", ЭтаФорма, ДопПараметры), ...);
ИначеЕсли ДопПараметры.НомерЭтапа = N-1 Тогда
// анализ ответа пользователя в диалоге предпоследней операции и начало
// последней операции
.....................................
КонецЕсли;
КонецПроцедуры