IE 2016

Индикатор процесса в строке состояния ... ?...!

Опубликовал Шёпот теней в раздел Программирование - Работа с интерфейсом

Я очень люблю програссБар – по-русски индикатор процесса … куда бы его поместить ...?

При использовании "элемента формы" часто его «таскаешь» туда-сюда и в итоге ему не оказывается места и каждый раз он оказывается в разных местах формы…

В итоге я его накладываю «сверху» на какой-нибудь элемент формы … Что очень неудобно и по «форме» и по «содержанию»… 


Идея разместить индикатор в строку состояния … ))) … вот что получилось …

… ВОТ …

 

от Абадонны и Душелова - и просто и гениально и быстро и штатно - вызов и работа индикатора строки состояния:

	 Процедура КнопкаВыполнитьНажатие(Кнопка)
    ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    Пр.ОтображатьПроцентВывода=Истина ;
    Эл=Новый ЭлементРезультатаКомпоновкиДанных;
    
    ПР.НачатьВывод();
    Для А=1 По 100 Цикл
        Эл.ПроцентВывода=А;
        //задержка, чтобы разглядеть
        Для Б=1 По 10000 Цикл КонецЦикла;
        ПР.ВывестиЭлемент(Эл);
    КонецЦикла
    ПР.ЗакончитьВывод();
КонецПроцедуры

прошу всех оценить и выразить своЁ отношение к данным товарищам в виде плюсов в любых их разработках ...

... ВОТ ...

Файлы

Наименование Файл Версия Размер Кол. Скачив.
ИндикаторПроцесса.epf
.epf 87,63Kb
14.09.14
349
.epf 87,63Kb 349 Скачать
ИндикаторПроцесса_ИС.epf
.epf 87,66Kb
14.09.14
143
.epf 87,66Kb 143 Скачать

См. также

Лучшие комментарии

39. Abadonna 03.11.2009 09:52
Процедура КнопкаВыполнитьНажатие(Кнопка)
	ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	Пр.ОтображатьПроцентВывода=Истина ;
	ПР.НачатьВывод();
	Для А=1 По 100 Цикл
		Эл=Новый ЭлементРезультатаКомпоновкиДанных;
		Эл.ПроцентВывода=А;
		//задержка, чтобы разглядеть
		Для Б=1 По 10000 Цикл КонецЦикла;
		ПР.ВывестиЭлемент(Эл);
	КонецЦикла
КонецПроцедуры
...Показать Скрыть
Ответили: (43) (42) (40)
# Ответить
40. dushelov (файл скачал) 03.11.2009 10:20
(39) Я бы так сделал

Процедура КнопкаВыполнитьНажатие(Кнопка)
	ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
	Пр.ОтображатьПроцентВывода=Истина ; 
	Эл=Новый ЭлементРезультатаКомпоновкиДанных; 
	
	ПР.НачатьВывод(); 
	Для А=1 По 100 Цикл 
		Эл.ПроцентВывода=А; 
		//задержка, чтобы разглядеть 
		Для Б=1 По 10000 Цикл КонецЦикла; 
		ПР.ВывестиЭлемент(Эл); 
	КонецЦикла 
	ПР.ЗакончитьВывод();
КонецПроцедуры
...Показать Скрыть
Ответили: (43) (42)
# Ответить
58. yuraos 07.03.2013 20:15
Вот еще вариант вывода прогресса выполнения
просто в строку состояния процедурой Состояние()
с выводом процента выполнения и
возможностью реверсии "прогресс-бара".
---
Может не так красиво (не графический, текстовый "прогресс-бар")
- зато не тормозит точно.
...ВОТ...
использован в обработке "Консоль запросов 1С + ADO"
в форме обработки выборки запроса.
# Ответить

Комментарии

1. coder1cv8 27.10.2009 13:50
Боян! )
Ответили: (2)
+ 1 [ D!m; ]
# Ответить
2. Шёпот теней (файл скачал) 27.10.2009 13:57
(1) ... текст понятен ... каков КОНтекст в ПОДтексте ...

... согласен "в" или "с" : чем проще - тем бОянистее - или боЯнистее - или боянИстее - или боянистЕЕ ... или ...?

... вОт ...
# Ответить
3. vasilykushnir 27.10.2009 16:20
скрин где?! :evil:
Ответили: (5) (4)
# Ответить
4. Шёпот теней (файл скачал) 27.10.2009 16:26
добавил "видимость" - сколько осталось до окончания ... )))


(3) ... чего там и скринить-то ... бегутЬ палочки в строке состояния ... но подчиняюсь товарищам ... сейчас сделаю ... уффф ...
Ответили: (13)
# Ответить
5. Шёпот теней (файл скачал) 27.10.2009 16:32
(3) .... не работает ПРИНТскрин при выполнении 1С ... не получится со скрином ... включаем видеоФантазию ...

... вОт ...
Ответили: (7) (6)
# Ответить
7. WiseSnake 28.10.2009 22:22
(5) Ух ты, а вот с этого места поподробней!
А как Вы средствами 1С отключили ПРИНТскрин?
Ответили: (9)
# Ответить
8. sashocq 28.10.2009 23:39
Думаю, это гениально!
И как это мне в голову не пришло?
Ответили: (10) (9)
# Ответить
9. Шёпот теней (файл скачал) 29.10.2009 02:44
(7) ... ПРИНТскрин рАботает ... но только либо ДО либо ПОСЛЕ запуска обработки ... поэтому "заснять" вид индикатора в процессе работы не получатся а без него скрин, я так полагаю и не нужен ... если у Вас получится я Вам буду блАгодарен ...

(8) ... СОгласен ... всЁ гениальное просто ... к сожалению, САМ сообразил только после "ветки" на Мисте с подобным вопросом ... п.с. Думается только в общении и спорах рождаются идеи ...
Ответили: (14)
# Ответить
10. Шёпот теней (файл скачал) 29.10.2009 02:47
цифры и скобки = смайлики ... начинается как в 1С - поставил галочку, НЕпоставил галочку, как поставил галочку, где поставил галочку ...

(8) ... СОгласен ... всЁ гениальное просто ... к сожалению, САМ сообразил только после "ветки" на Мисте с подобным вопросом ...

п.с. Думается только в общении и спорах рождаются идеи ...
Ответили: (11)
# Ответить
11. Шёпот теней (файл скачал) 29.10.2009 02:48
(10) капец ... вот ...
# Ответить
12. vladal 29.10.2009 10:05
(0) А в чем разница в этих обработках - ИС и без ИС?
Ответили: (13)
# Ответить
13. Шёпот теней (файл скачал) 29.10.2009 10:36
(12) ... см. (4) ...

первая версия - "бежит" индикатор - но не видно сколько осталось до окончания ...
версия ИС - и индикатор "бежит" и видно сколько осталось до конца процесса ...

... вот ...
# Ответить
14. WiseSnake 30.10.2009 08:17
(9)
Ответили: (15)
# Ответить
15. Шёпот теней (файл скачал) 30.10.2009 09:33
(14) ... убил ... уничтожил ... размазал ... )))

покзал конфетку ... расскажи как сделал ...

ну НЕ УЖЕЛИ принтСкрин-ом ... ??? или волшебным сочетанием клавишЬ ...???

... ВОТубилВЕДЬ ...
Ответили: (19) (18)
# Ответить
16. anig99 30.10.2009 09:57
(16) на виртуальной машине или через терминал
Ответили: (17) (16)
# Ответить
17. Шёпот теней (файл скачал) 30.10.2009 10:06
(16) ... нууу... тогДА это НЕчестно ... ))) ...

В операционной системе Windows нажатие клавиши Print Screen инициирует создание скриншота всего экрана, а нажатие Print Screen одновременно с клавишей Alt создаст скриншот активного окна.

...
# Ответить
18. WiseSnake 30.10.2009 11:24
(15) Локально. ПринтСкрином но у меня стоит SnagIt (без него я и не пользовался ПринтСкрином никогда :)))
Ответили: (20)
# Ответить
19. WiseSnake 30.10.2009 11:27
(15) > покзал конфетку ...
Ну если понравилось моГешь вставить в шапку сабжа ;)
Ответили: (20)
# Ответить
20. Шёпот теней (файл скачал) 30.10.2009 11:30
(18) ... ммм ...
(19) ... ага ...

...вотСПАСИБОвставил...
# Ответить
21. Шёпот теней (файл скачал) 02.11.2009 12:13
просто так:

в общихМодулях в ОбщегоНазначения есть:
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт

недавно на мисте увидел интересную идею по "разложить сторку на подстроки" со следующим механизмом:

"... заменить пробелы разделителем строк... и далее работать как с многострочным текстом ..."

... может это для кого-то и не открытие но мне понравилась эта гениальная простота ...

... вот ...
+ 2 [ D!m; gaglo; ]
# Ответить
22. caponid 02.11.2009 12:33
Полезная штука)

используется очень давно в распределенном обмене данными
в стандартной форме выгрузки данных было замеряно, что на отрисовку рюшечек индикатора графикой используется 30% времени, с использование псевдографики в строке состояния затраты снизились на порядки.

рекомендую)
# Ответить
23. tango (файл скачал) 02.11.2009 13:52
а если так:
разместить на экране поверх 1ски что-нибуль еще, но так, чтоб прогрессбар был виден. запускаешь обработку, переключаешься в "что-нибудь еще" и жамкаешь принтскрин...?
Ответили: (24)
# Ответить
24. Шёпот теней (файл скачал) 02.11.2009 14:12
(23) ... мАэстро .... попробовал ... ты гений ... прокатило ... !!! ... )))

... ВОТведьКАКбывает...
# Ответить
25. Abadonna 03.11.2009 03:18
.... не работает ПРИНТскрин при выполнении 1С ... не получится со скрином ...

А как я тогда сделал вот тут? :o
http://www.infostart.ru/public/59436/
# Ответить
26. rinatru 03.11.2009 06:37
зачем такой велосипед?
а пользоваться стандартной формой прогресс-бара из общих форм конфигурации????
Ответили: (33) (27)
# Ответить
27. Шёпот теней (файл скачал) 03.11.2009 07:59
(26) ... это как ...?
Ответили: (28)
# Ответить
28. Abadonna 03.11.2009 08:01
(27) Есть какая-то фича с длинющим названием... только я уж не помню, был коммент на одну из моих разработок, которую я снес
Ответили: (29)
# Ответить
29. Abadonna 03.11.2009 08:06
+(28) Там через какой-то (не помню!) стандартный объект 8.1 можно вывести прогресс-бар в статус-панель
# Ответить
30. Abadonna 03.11.2009 08:14
Сань, что-то вроде
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент
Ответили: (33) (31)
# Ответить
31. Шёпот теней (файл скачал) 03.11.2009 08:43
(30) ... спасибо ... будем маленько поискать ... )))

... вот ...
# Ответить
32. Abadonna 03.11.2009 08:46
Начало, точно я уж изобразил ;)
ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
Пр.ОтображатьПроцентВывода=Истина ;
ПР.НачатьВывод();
Индикатор появляется, процент стоит 0. Дальше лень колупаться
Ответили: (34)
# Ответить
33. Шёпот теней (файл скачал) 03.11.2009 08:53
(26) , (30) ... видимо ВЫ абсолютно прАвы ... что-то есть :

ОбщийМодуль
ТиповыеОтчеты
Процедура ВывестиТиповойОтчет(ОтчетОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета = Истина, ВнешниеНаборыДанных = Неопределено, ВыводитьШапкуОтчетаНаВсехСтраницах = истина)


//Создадим и инициализируем процессор вывода результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
...
//Обозначим начало вывода
ПроцессорВывода.НачатьВывод();

...

Пока Истина Цикл

...

//Элемент получен - выведем его при помощи процессора вывода
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);

...

КонецЦикла;

//Обозначем завершение вывода
ПроцессорВывода.ЗакончитьВывод();
...


... вотВедьКакБывает ...
Ответили: (35) (34)
# Ответить
34. Шёпот теней (файл скачал) 03.11.2009 08:55
(32) ... пока я "колупался" с (33) ты меня уже "успел" ... )))

... вот ...
# Ответить
35. Abadonna 03.11.2009 08:56
(33) А в либе я все-таки оставил метод стьатус-индикатора ;)
Ибо нема в 7.7 ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент
А в 8.1 мой не "забивает" строку состояния
# Ответить
36. Шёпот теней (файл скачал) 03.11.2009 09:10
//Создадим и инициализируем процессор вывода результата
ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
//ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПР.НачатьВывод();

Для раз=1 По Элемент.Значение Цикл
ПР.ВывестиЭлемент(раз);
КонецЦикла;

//Обозначем завершение вывода
ПР.ЗакончитьВывод();

выдаЁт ошибку:
Ошибка при вызове метода контекста (ВывестиЭлемент): Несоответствие типов (параметр номер '1')
ПР.ВывестиЭлемент(раз);

... как нужно ? ... подскажите люди добрые ... ВОТ ...
Ответили: (38)
# Ответить
37. Шёпот теней (файл скачал) 03.11.2009 09:30
думается мне - что тама требуется как объекту СКД "дать" ещё кучу входных данных:

КомпоновщикМакетаСведенияОбОрганизациях = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиСведенияОбОрганизациях = КомпоновщикМакетаСведенияОбОрганизациях.Выполнить(СхемаКомпоновкиДанныхСведенияОбОрганизациях, НастройкиСведенияОбОрганизациях);

ПроцессорКомпоновкиСведенияОбОрганизациях = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиСведенияОбОрганизациях.Инициализировать(МакетКомпоновкиСведенияОбОрганизациях);

... наверное не стоит овчинка выделки ... поэтому и придумали "ИНДИКАТОР" ...

... кто знает - подскажите ... кто умеет - покажите ... ВОТ ...
# Ответить
38. Abadonna 03.11.2009 09:45
(36) Хитрый :D Я на том же тормознулся, а дальше стало лень эксперименты проводить. Но будем посмотреть ;)
# Ответить
39. Abadonna 03.11.2009 09:52
Процедура КнопкаВыполнитьНажатие(Кнопка)
	ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	Пр.ОтображатьПроцентВывода=Истина ;
	ПР.НачатьВывод();
	Для А=1 По 100 Цикл
		Эл=Новый ЭлементРезультатаКомпоновкиДанных;
		Эл.ПроцентВывода=А;
		//задержка, чтобы разглядеть
		Для Б=1 По 10000 Цикл КонецЦикла;
		ПР.ВывестиЭлемент(Эл);
	КонецЦикла
КонецПроцедуры
...Показать Скрыть
Ответили: (43) (42) (40)
# Ответить
40. dushelov (файл скачал) 03.11.2009 10:20
(39) Я бы так сделал

Процедура КнопкаВыполнитьНажатие(Кнопка)
	ПР=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
	Пр.ОтображатьПроцентВывода=Истина ; 
	Эл=Новый ЭлементРезультатаКомпоновкиДанных; 
	
	ПР.НачатьВывод(); 
	Для А=1 По 100 Цикл 
		Эл.ПроцентВывода=А; 
		//задержка, чтобы разглядеть 
		Для Б=1 По 10000 Цикл КонецЦикла; 
		ПР.ВывестиЭлемент(Эл); 
	КонецЦикла 
	ПР.ЗакончитьВывод();
КонецПроцедуры
...Показать Скрыть
Ответили: (43) (42)
# Ответить
41. Abadonna 03.11.2009 10:35
(39,40) Поломали мы Саньке кайф :D
Ответили: (42)
# Ответить
42. Шёпот теней (файл скачал) 03.11.2009 10:47
(39), (40) ... УРА-аааа ...

(41) ... ужжжж и поломали ... наОООбОООрОООт ... навели ...

кто же не знает величия О-Великих - Abadonna и Душелова ...

... безгранично ВАМ благодарен ... выражаю искреннее восхищение ...

!!!

... ВОТ ... знай великих ... орешек знаний ...
# Ответить
43. Шёпот теней (файл скачал) 03.11.2009 11:00
(39), (40) ... для пущей справедливости добавил ваши посты в (0) ...

с уважением Шёпот теней (в миру Александр Шишкин) ... ВОТ ...
Ответили: (44)
# Ответить
44. Abadonna 03.11.2009 11:25
(43) Ты мне лучше на мой индикатор плюс поставь, там "букафф" меньше :D
SetStatusBarGauge()
StatusBarGaugePosition(Процент)
# Ответить
45. Шёпот теней (файл скачал) 03.11.2009 11:52
если "здесь" то я ужжж все твои комменты на+ ...
а в разработках не нашЁл ...

...вот...Великий...
Ответили: (46)
# Ответить
46. Abadonna 03.11.2009 14:48
(45) Проморгал свеженькую Miracle ;)
http://www.infostart.ru/public/59436/
# Ответить
47. aga_aga (файл скачал) 27.05.2010 14:29
пилюс за ... картинку на форме и за логотип ШТ :)
Ответили: (48)
# Ответить
48. aga_aga (файл скачал) 27.05.2010 14:35
(47) глюки: правка коммента не отображается сразу, а после ... пока не уловил зависимости
а из двух файлов выложенных на скачку какой скачивать - то?
во втором файле постфикс ИС - это что значит, с ИнфоСтарта шо-ли?
а 1-й тогда откуда, хе-хе, от ШТ?

Да картинка класс! Можно я эту картинку позаимствую на свою обработку по импорту остатков ГСМ, вот сюда ?..

Прикрепленные файлы:

28.05.png
# Ответить
49. Ткачев (файл скачал) 19.10.2010 12:15
Как надпись "Вывод отчета", в начале индикатора поменять на другую ?
# Ответить
50. Шёпот теней (файл скачал) 19.10.2010 13:19
... если через способ Абадонны ...
.. посмотрите оператор "ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент­" если там есть замена текста то можно - иначе - то наверное никак ... (((

... если получится то и нам расскажите ... ! ..

... вот ...
# Ответить
51. hooligan_slx (файл скачал) 30.09.2011 11:34
Немного переделал твою обработку под себя...бухгалтерам нравится что они могут отслеживать ход выполнения процесса!! За идею ставлю +!! ))
# Ответить
52. iren_8807 09.10.2011 01:24
Хорошая работа!
# Ответить
53. AruslanM (файл скачал) 07.12.2011 12:11
Немного изменил под себя, спасибо, взял на вооружение.
# Ответить
55. tormozit (файл скачал) 23.12.2011 18:50
Признаюсь, тоже сам не догадался до такой возможности. Однако ее универсальное применение на мой взгляд неоправдано из-за дезориентирующей пользователя надписи "Вывод отчета" слева от прогресс-бара
# Ответить
56. igormiro (файл скачал) 04.01.2012 18:42
Мне интересно, а кто нибудь быстродействие такого индикатора замерял.
Мне кажется что 50 % ресурсов системы будет уходить на такой индикатор. Следующее под управляемыми формами не работает.
# Ответить
57. edzz 04.03.2013 19:41
крутатенька
# Ответить
58. yuraos 07.03.2013 20:15
Вот еще вариант вывода прогресса выполнения
просто в строку состояния процедурой Состояние()
с выводом процента выполнения и
возможностью реверсии "прогресс-бара".
---
Может не так красиво (не графический, текстовый "прогресс-бар")
- зато не тормозит точно.
...ВОТ...
использован в обработке "Консоль запросов 1С + ADO"
в форме обработки выборки запроса.

Прикрепленные файлы:

Безымянный1.PNG
Безымянный2.PNG
РекурсивныйПрогрессДемо.epf
# Ответить
59. lagunovartur 16.05.2016 19:13
А как заменить слова вывод отчета на что нибудь свое?
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016