bdd2

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

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

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

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

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

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

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

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

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

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