gifts2017

Шаблон "прогресс бара"

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

Простой шаблон, позволяющий быстро подключить к своим обработкам форму с индикатором процесса.
Просто перетащите "ФормуПроцесса" из этой обработки в свою и добавьте отображение показателей по аналогии с приведенным ниже примером:
// Пример использования:
Запрос=Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура");
Выборка=Запрос.Выполнить().Выбрать();
Всего=Выборка.Количество();
// Инициализация //
ФормаПроцесса=ПолучитьФорму("ФормаПроцесса");
ФормаПроцесса.Заголовок="Обработка данных...";
ФормаПроцесса.ЭлементыФормы.ИндикаторПроцесса.МаксимальноеЗначение=Всего;
ФормаПроцесса.Открыть();
н=0;
///////////////////
Пока Выборка.Следующий() Цикл
	// Установка текущих значений //
	н=н+1;
	ОбработкаПрерыванияПользователя();
	ФормаПроцесса.ЭлементыФормы.ТекущийЭлемент.Заголовок=Выборка.Ссылка;
	ФормаПроцесса.ЭлементыФормы.ИндикаторПроцесса.Значение=н;
	////////////////////////////////
	
	// Далее непосредственно обработка данных...
	
КонецЦикла;
ФормаПроцесса.Закрыть();	// Закрываем форму процесса
	
// (!) Совет: Если записей в выборке достаточно много и обработка одной записи 
// не занимает продолжительного времени, то не стоит обновлять форму процесса 
// на каждой итерации, так как это дает очень ощутимое замедление обработки в целом.
// Пример обновления состояния для каждой 100-й записи:
Пока Выборка.Следующий() Цикл
	н=н+1;
	ОбработкаПрерыванияПользователя();
	Если н=1 ИЛИ н/100=Цел(н/100) ИЛИ н=Всего Тогда
		ФормаПроцесса.ЭлементыФормы.ТекущийЭлемент.Заголовок=Выборка.Ссылка;
		ФормаПроцесса.ЭлементыФормы.ИндикаторПроцесса.Значение=н;
	КонецЕсли;
	// ...
КонецЦикла;

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

Наименование Файл Версия Размер Кол. Скачив.
TemplateProgressBar.zip
.1215166293 5,68Kb
25.09.09
321
.1215166293 5,68Kb 321 Бесплатно

См. также

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

Комментарии

1. Андрей Скляров (coder1cv8) 04.07.08 14:47
Часто использую в своих обработках, поэтому решил выложить для общего пользования, никаких изысков, всё просто и штатно.
2. Александр Окулов (PowerBoy) 04.07.08 14:48
Обычно процент выполнения выводят для каждой сотой записи так:
Если БД.НомерЗаписи() % Цел(МаксимальноеЗначение / 100) = 0 Тогда
Индикатор = БД.НомерЗаписи() / МаксимальноеЗначение * 100;
КонецЕсли;
German; coder1cv8; +2 Ответить 1
3. Андрей Скляров (coder1cv8) 04.07.08 14:55
(2) Я не против ) Мне просто показалось так наглядней будет...
4. Герман (German) 04.07.08 14:57
Да все обычно .. ну уж очень хочется изысков ... кому нужны. можно посмотреть шаблон в интеграторе Там выводится: - прогноз выполнения (сколько времени осталось), - сколько прошло, -скорость и прирост или отставание от прогноза
5. Андрей Скляров (coder1cv8) 04.07.08 15:06
(4) Да, в EI много интересного можно "подсмотреть"... )
6. Герман (German) 04.07.08 15:49
Кстати прогресс реально замедляет работу .. что с наворотами что самый обычный...
7. Андрей Скляров (coder1cv8) 04.07.08 16:09
(6) Ну иногда имеет смысл немножко пожертвовать производительностью, что бы пользователь не говорил, что "Ваша обработка зависла!" ) Тем более есть всё же способы минимизировать замедление... Реже обновлять состояние, для данного прогресс бара, я бы ещё добавил получение Представления заранее, если хотим указывать текущий элемент выборки.
8. limonka1 (limonka1) 07.04.09 15:22
Замечательно работает. Воспользовался, спасибо
9. Евгений Мальцев (emal) 26.06.09 10:35
Спасибо, очень наглядно.
10. Сергей Старых (tormozit) 26.06.09 11:16
Ух и торомозов словится на таком индикаторе.
11. Олег Молочников (milkers) 07.06.10 16:41
Хотел быстро найти расчет времени оставшегося. Сильно обломался.
12. Алекс Ю (AlexO) 22.01.12 21:50
13. andrey dyak (dyak84) 15.08.13 17:46
Автору спасибо за идею действительно все кравиво и просто. Так держать.
14. Александр Лобачёв (SANILLA) 05.10.13 03:42
хм, ну может и пригодится, качну ка я на всякий случай :)
15. Александр Лобачёв (Myskyl) 05.10.13 03:43
наглядный пример, сладу в копилочку
16. Алексей Бакханд (BackHand001) 25.04.16 20:56
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа