gifts2017

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

Опубликовал Михаил Семенов (Shaman100M) в раздел Программирование - Практика программирования

Изменяем  "В отчет выведено ... строк ". Добавляем в состояние кроме счетчика его скорость и общее время выполнения. Получается "Выполняется обработка  -  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, файл выложен здесь. См. также дополнительные картинки,
и ссылку http://infostart.ru/projects/1330/

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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) 01.03.07 17:37
Читай внимательно "Дополнительно". В первоначальном варианте нужно было скопировать ProgressBar под тем же именем в обработки конфы.

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

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

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

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

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

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

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

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