Обновление строки состояния

Программирование - Практика программирования

Изменяем  "В отчет выведено ... строк ". Добавляем в состояние кроме счетчика его скорость и общее время выполнения. Получается "Выполняется обработка  -  67 387 с/мин  -  00:31  -  34 012 строк". Плюс варианты с анимацией. Работает быстро, замер производительности "на лету".
Обновление строки состояния

Улучшенный вариант обновления строки состояния из циклов.

В состояние выполнения кроме счетчика добавлена его скорость и
общее время выполнения с начала инициализации счетчика.

Получаем возможность посмотреть скорость выполнения отчета / обработки без отладчика,
что удобно для пользователей - они могут вовремя сигнализировать о замедлении
выполнения продолжительных обработок (которые выполняются "к сроку"), либо, просто сравнить
два метода "на лету", в ходе выполнения.

Кроме этого добавлено несколько вариантов "анимации" и "прогресс-бар" с открываемой обработкой.
Конечное состояние процесса не отслеживается. Обработка закрывается сама.
Практически не влияет на общую скорость, - задержка эквивалентна десяти строкам А=А+1;

В составе пакета:
ProgressBar.ert - внешняя обработка "прогресс-бар".
Для демо-просмотра скопировать в ExtForms каталога ИБ
Можно встроить в конфигурацию, в обработки с тем же именем ProgressBar.

RefreshProgressBar.ert - внешняя обработка, пример реализации, она же содержит блок кода для вставки в
глобальный модуль.
Readme.txt - этот файл

Изменение 05.03.2007

RefreshProgressBar_Speed.txt - текст "облегченной" процедуры обновления строки состояния, без "анимации", выполняется быстрее на 16 - 18%

Расширение функционала 16.10.2007
"тайминг" выполняемых действий в окне сообщений и дублирование строки состояния в тексте на форме
изменения коснулись RefreshProgressBar.ert, файл выложен здесь. См. также дополнительные картинки,
и ссылку //infostart.ru/projects/1330/

Автор Семенов М.Б. Кострома, ICQ 337-896-541

Скачать файлы

Наименование Файл Версия Размер
RefreshProgressBar.zip
.1172759541 47,22Kb
25.09.09
144
.1172759541 47,22Kb 144 Скачать
RefreshProgressBar_Speed.txt
.1173084709 0,85Kb
25.09.09
72
.1173084709 0,85Kb 72 Скачать
Изменения от 16.10.2007
.1192535511 14,00Kb
25.09.09
71
.1192535511 14,00Kb 71 Скачать

См. также

Комментарии
1. Сhe Burashka (CheBurator) 01.03.07 16:50 Сейчас в теме
ОткрытьФорму("Обработка.ProgressBar",_ОжКонтекст);
{C:\REFRESHPROGRESSBAR\REFRESHPROGRESSBAR\REFRESHPROGRESSBAR.ERT(31)}: Неверно указан вид. ProgressBar
работает только "вид бегунка = строка состояния"
тьфу, криво сделано... почему нельзя было вызвать как внешнюю обработку (для демо-целей)?
2. Сhe Burashka (CheBurator) 01.03.07 16:51 Сейчас в теме
хотя, может, я и не прав..
3. Сhe Burashka (CheBurator) 01.03.07 16:53 Сейчас в теме
кого ломает, внедрять в конфигу и пр.
смотрим здесь что хотел сказать автор (примерно)! http://infostart.ru/file.php?0,file=199
для красивого результата - как описано в инструкции к ориг.разработке.
4. Михаил Семенов (Shaman100M) 1176 01.03.07 17:37 Сейчас в теме
Читай внимательно "Дополнительно". В первоначальном варианте нужно было скопировать ProgressBar под тем же именем в обработки конфы.

Сделал просмотр без изменения конфигурации. Сначала ищет в обработках, если там нет, то внешний отчет в Extforms
5. Сhe Burashka (CheBurator) 01.03.07 19:55 Сейчас в теме
ну тогда по-хорошему - сначала надо искать по пути запуска главной обработки.
6. Михаил Семенов (Shaman100M) 1176 02.03.07 09:41 Сейчас в теме
Так то оно так, можно ловить РасположениеФайла(,) , но это не в коде, который будет копироваться в глобальный модуль. Можно в ПриОткрытии() главной обработки проверять наличие ProgressBar, и копировать при необходимости в ExtForms
7. Lustin (Lustin_is) 03.03.07 13:59 Сейчас в теме
Мое скромное мнение - подобную обработку необходимо прогнать бы еще через замер производительности

у меня получилось 70% общего время выполнения цикла тратится на исполнение Процедура Ож() = обновление строки состояния - это вообще нормально ???
8. Михаил Семенов (Shaman100M) 1176 04.03.07 13:02 Сейчас в теме
Это нормально.

Если состояние все же необходимо обновлять, то и обычная команда Состояние() в куске кода
Код
 Для М1=1 По 100000 Цикл 
Показать полностью

Код
       Состояние("здесь ничего не вычисляем"); 
Показать полностью

Код
 КонецЦикла; 
Показать полностью

дает 60% общего времени.

Через замер естественно прогонял (поэтому и промеж. переменных много), но сравнивал не с "голым циклом", а с этим эталоном Состояние("здесь ничего не вычисляем").

Замер через отладчик показал +200%
Замер через _getperformancecounter() +40%
9. Maljaev (maljaev) 02.03.08 18:08 Сейчас в теме
Хитро с полосой... не сразу допер.
10. Александр Алюев (alyuev) 199 01.12.09 17:32 Сейчас в теме
Прогресс можно построить с помощью шрифта Terminal выводя символ "Ы". Так можно заменить 2 белых чередующихся бара-подложки на один.
Оставьте свое сообщение