1С Образец проектирования «Ждун».

При создании кода в 1С нередко возникает необходимость подождать завершения внешних событий, только после которых и по результатам выполнения событий запустить дальнейшее выполнение. То что я видел своими глазами или предлагается в https://infostart.ru/1c/tools/706204/ основано либо на внешнем софте, либо на циклах типа 10050000 раз умножить sin на сos. И то и другое блокирует работу, некоторые варианты сильно грузят процессор. Выпущенный в 8.3.25 ВызватьПаузу(<Интервал>) работает только на сервере. Я делал интеграцию по http с внешней площадкой, на наш запрос запускается их процесс, который, грубо говоря, может выполняться от нескольких секунд до недели. Это конечно гипербола, но проблема понятна.
Внутренности 1С явно многопоточны, их выдают такие процедуры как ОписаниеОповещения и ОбработкаОжидания, но бедняге 1С программисту это не положено, рожей не вышел. Именно они позволяет создать решение этой задачи, не перегружая процессор и не блокируя работу.
Сформулируем точнее. Нам надо реализовать схему

Если ответ на «2. Проверка состояния» приходит сразу, получаем бешеную карусель. Между п.2 и 3. нужно бы поставить паузу, которая даст время внешней системе сформировать состояние. Как указывалось выше приемлемого решения нет. И тут на помощь приходят крохи многопоточности ОбработкаОжидания. Кратенько приведем схему кода решения.

Это главный код. Пояснения. Процедура алгоритм запускается в двух режимах с проверкой и без(это совсем не обязательно) . Первый раз когда нужно узнать какое состояние вернет та сторона, второй раз коrда возвращено состояние успешного завершения и нужно просто продолжить обработку полученных данных. Обработчик «Проверка состояния» запускается снова и снова пока не получены состояния завершения ЗавершеноСОшибкой или ЗавершеноУспешно. В первом случае выполнение прекращается, во втором случае продолжается обработка данных. Можно использовать и периодическое ПодключитьОбработчикОжидания, но мне показалось так нагляднее.
Представлю полный демонстрационный код, который можно вставить в любую обработку и посмотреть как оно работает.


Процедуры «таймаут», и «проверка» это имитация внешнего поставщика состояний.
Такая структура кода полностью решает задачу на схеме, при этом не происходит и загрузки процессора, ни блокировки работы. Конечно это лишь схема, нужно предусмотреть разные обвязки типа недопущения бесконечного ожидания и пр. Но код работает и таймауты больше для такой задачи не нужны.
Для пущей важности эту схему назвал 1С образец проектирования «Ждун».