&НаКлиенте Процедура Операция() Состояние = ПолучитьСостояние(); НачальнаяИнициализация(Состояние); ПоследнееОбновлениеИндикатора = ТекущаяДата(); Пока Продолжать(Состояние) Цикл ОбработкаПрерыванияПользователя(); ПоследнееОбновлениеИндикатора = СовершитьВитокИтерации(Состояние, ПоследнееОбновлениеИндикатора); ОбновитьИндикатор(Состояние); КонецЦикла; ЗавершающаяИнициализация(Состояние); КонецПроцедуры &НаСервере Процедура СовершитьВитокИтерации(Состояние, ПоследнееОбновлениеИндикатора) Пока Продолжать(Состояние) Цикл ТекущееПоложениеИндикатора = ТекущаяДата(); Если НеобходимоОбновлениеИндикатора(ПоследнееОбновлениеИндикатора, ТекущееПоложениеИндикатора) Тогда Возврат ТекущееПоложениеИндикатора; КонецЕсли; Состояние = ОбработатьСостояние(Состояние); КонецЦикла; Возврат ТекущаяДата(); КонецПроцедуры
функции ПолучитьСостояние, НачальнаяИнициализация, Продолжать, ОбработатьСостояние, ЗавершающаяИнициализация оставить на разработку пользователю шаблона.
Источник: infostart.ru, из комментариев пользователя Rusmus