HelpF.pro

Прогресс бар в строке состояния

Для наглядного представления продолжительного процесса выполнения обработки данных можно реализовать строку прогресса в строке состояния при помощи псевдографики.
Код 1C v 7.x
 //Пример процедуры обработки таблицы значений ТЗ
//Размер прогрессора задан в 20 символов (5%)
Процедура ОБработкаДанных()
РазмерИндикатора = ТЗ.КоличествоСтрок();
Индикатор = "";
Для А = 1 По 20 Цикл
Индикатор = Индикатор + " ";
КонецЦикла;
Счетчик = 0;
//Текст обработки строк ТЗ
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолуичтьСтроку() = 1 Цикл
Счетчик = Счетчик + 1;
//Обработка строки
Показатель = Цел(Счетчик/РазмерИндикатора * 100);
Если Цел(Показатель/5) = Показатель/5 Тогда
Индикатор = "";
Для А = 1 По 20 Цикл
Индикатор = Индикатор + ?(А<=Показатель/5,Симв(127)," ");
КонецЦикла;
Состояние(Индикатор + "| Анализ адресов; " + Показатель + "%");
КонецЕсли;
КонецЦикла;
КонецПроцедуры


Код 1C v 7.x
 // ПрогрессБар в строке состояния. Маленький, шустренький
Процедура глПрогрессор(Сообщение,Всего,Текущ) Экспорт
Если Всего>0 Тогда
Процент=Цел(Текущ/Всего * 100);
Если Процент > Цел((Текущ-1)/Всего * 100) Тогда
Состояние(Сообщение + ": "+Формат(Процент,"Ч(0)2")+"% "+СтрЗаменить(Формат("","С"+Мин(99,Процент))," ","l")+СтрЗаменить(Формат("","С"+Мин(99,99-Процент))," ","'")+"l");
КонецЕсли;
КонецЕсли;
КонецПроцедуры

// Вот пример использования:
Для ин=1 По 100000 Цикл
глПрогрессор("Тест",100000,ин);
КонецЦикла;

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/227.html