Для наглядного представления продолжительного процесса выполнения обработки данных можно реализовать строку прогресса в строке состояния при помощи псевдографики.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//Пример процедуры обработки таблицы значений ТЗ //Размер прогрессора задан в 20 символов (5%) Процедура ОБработкаДанных() РазмерИндикатора = ТЗ.КоличествоСтрок(); Индикатор = ""; Для А = 1 По 20 Цикл Индикатор = Индикатор + " "; КонецЦикла; Счетчик = 0; //Текст обработки строк ТЗ ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолуичтьСтроку() = 1 Цикл Счетчик = Счетчик + 1; //Обработка строки Показатель = Цел(Счетчик/РазмерИндикатора * 100); Если Цел(Показатель/5) = Показатель/5 Тогда Индикатор = ""; Для А = 1 По 20 Цикл Индикатор = Индикатор + ?(А<=Показатель/5,Симв(127)," "); КонецЦикла; Состояние(Индикатор + "| Анализ адресов; " + Показатель + "%"); КонецЕсли; КонецЦикла; КонецПроцедуры |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ПрогрессБар в строке состояния. Маленький, шустренький Процедура глПрогрессор(Сообщение,Всего,Текущ) Экспорт Если Всего>0 Тогда Процент=Цел(Текущ/Всего * 100); Если Процент > Цел((Текущ-1)/Всего * 100) Тогда Состояние(Сообщение + ": "+Формат(Процент,"Ч(0)2")+"% "+СтрЗаменить(Формат("","С"+Мин(99,Процент))," ","l")+СтрЗаменить(Формат("","С"+Мин(99,99-Процент))," ","'")+"l"); КонецЕсли; КонецЕсли; КонецПроцедуры // Вот пример использования: Для ин=1 По 100000 Цикл глПрогрессор("Тест",100000,ин); КонецЦикла; |