Прогресбар в 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
ПроцессорВывода.ЗакончитьВывод();

Єдиним мінусом в цьому способі є те, що надпис, який супроводжує прогресбар – “Вывод отчета”.  Проте мені він не сильно заважає )