Прогресбар в 1С для отображения состояния операций

Каждый из нас со временем сталкивается с необходимостью вывода прогресбара для отображения текущей точки выполнения длительной операции. Для этого можно использовать различные методы:

  1. Нарисовать прогресбар на форме и управлять его выводом;
  2. Создать отдельную форму специально для отображения прогресс бара;
  3. Использовать символы текста методом Состояние ();

Все они выполняют поставленную им задачу, но так как мы (программисты) народ ленивый — то хотелось бы реализовать это средствами платформы да еще и визуально. Каждый из нас видел, что при формировании отчетов, платформа выводит свой прогресбар, поэтому наверняка можно было как-то перехватить этот метод. С выходом СКД это стало реализовать намного легче. Вот способ, который позволяет выводить прогресбар для своих операций методом платформы:

1. Инициализация
Инициализирует необходимые переменные и контейнер для вывода. На этом этапе нам нужно знать приблизительное значение тактов цикла.

Перед циклом

1
2
3
4
5
6
7
8
//установка параметров для вывода прецентов
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.ОтображатьПроцентВывода = Истина;
ЭлементПроцессора = Новый ЭлементРезультатаКомпоновкиДанных;
Шаг = ?(КоличествоТактовЦикла = 0, 0, 100 / КоличествоТактовЦикла);
ТекПроцент = 0;
ПроцессорВывода.НачатьВывод();
//после этого должен начаться цикл

2. Вывод прогресбара
Непосредственно сам вывод. При заврешенни каждого такта цикла мы змищуемся на нужный нам шаг.

В цикле

1
2
3
4
5
//вывод процента
ТекПроцент = ТекПроцент + Шаг;
ЭлементПроцессора.ПроцентВывода = ТекПроцент;
ПроцессорВывода.ВывестиЭлемент(ЭлементПроцессора);
ОбработкаПрерыванияПользователя();

3. Завершение
После завершения цикла необходимо скрыть прогресбар.

После цикла

1
ПроцессорВывода.ЗакончитьВывод();

Единственным минусом в этом способе является то, что надпись, сопровождающая прогресбар — «Вывод отчета». Однако мне он не сильно мешает)