Индикатор на управляемой форме

Публикация № 1109597

Разработка - Работа с интерфейсом

индикатор управляемые формы загрузка excel отслеживание статуса выполнения

23
Доброго времени! Примеры данной публикации помогут всем, кто хочет использовать индикатор на управляемых формах. В публикации я предлагаю простое рабочее решение по отслеживанию процесса выполнения обработок на управляемых формах.

В данной задаче я рассмотрю 2 примера - это "проведение документов" и "загрузка на сервер с обработкой внешнего Excel файла".

Итак, первый пример:

Мы получаем список документов стандартным методом кнопкой "Обновить период" с отбором по организации, затем нажимаем кнопку "Начать проведение"  - запускаем данный процесс - индикатор начинает работать.

По достижению 100% - документы проведены. Так же, я разместил "статус бар", который показывает какой документ обрабатывается в текущий момент.

 

Вторая задача. Здесь, мы должны загрузить Excel (xlsx) файл на сервер и отследить статус его обработки:

 

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

Для решения данных примеров я использовал Платформу 8.3.13.1865 и Конфигурацию УТ 11.3 (в принципе может быть любой другой, но на УФ).

Дополнительных условий не требуется.

"Основная" клиентская функция данных обработок вот такая:

ТекВремя = ТекущаяДата();
	
ТекущийДокумент =0;
ВсегоДокументов =Объект.СписокДокументов.Количество();
	
Для Каждого Стр11 ИЗ Объект.СписокДокументов Цикл
		
	СостояниеОбработки = "Обрабатываем документ: "+ Стр11.Реализация;
		
	НачатьПроведениеСервер(Стр11.Реализация);    // обращение на сервер
			
	ТекущийДокумент = ТекущийДокумент + 1;
		
	Индикатор = ТекущийДокумент/ВсегоДокументов*100;
		
	ОбработкаПрерыванияПользователя();
        ОбновитьОтображениеДанных();
		
КонецЦикла;
	
СостояниеОбработки = "Документы проведены за "+ СокрЛП(ТекущаяДата() - ТекВремя) + " сек.";

 

Буду рад, если данные примеры помогут вам. Так же хочу сказать спасибо автору вот этой публикации, которая сподвигла меня написать эту маленькую шпаргалку - памятку.

Спасибо всем за прочтение. Надеюсь, материал полезен!

23

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

Наименование Файл Версия Размер
Проведение документов прогресс-бар
.epf 9,93Kb
18.08.19
2
.epf 9,93Kb 2 Скачать
Загрузка из Excel и обработка с прогресс-бар:
.epf 9,70Kb
18.08.19
3
.epf 9,70Kb 3 Скачать
Пример загружаемого Excel файлв
.xlsx 13,35Kb
18.08.19
1
.xlsx 13,35Kb 1 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. RocKeR_13 676 19.08.19 09:00 Сейчас в теме
При большом количестве обращений на сервер лучше уж запускать в фоне с отображением прогресс-бара (или так)
PLAstic; 7OH; rpgshnik; +3 Ответить
2. aximo 819 19.08.19 09:27 Сейчас в теме
(1) вторая ссылка у меня указана в публикации. Совершенно верно!
3. RocKeR_13 676 19.08.19 09:28 Сейчас в теме
4. PLAstic 214 19.08.19 16:18 Сейчас в теме
Чисто побрюзжать.

Я бы рекомендовал бить себя по рукам каждый раз за конкатенацию строк вместо СтрШаблон() и за имена переменных вроде Стр11.
u_n_k_n_o_w_n; Serj1C; rpgshnik; DmitrySinichnikov; +4 Ответить
5. antonkms88 19.08.19 18:27 Сейчас в теме
(4) поясните пожалуйста для простых смертных, чем вам конкатенация не угодила?
12. PLAstic 214 20.08.19 10:09 Сейчас в теме
(5)
1) Быстродействие.
2) Представь ШаблонСообщения = НСтр("ru = 'Объём работ ""%1"" на поле %2 (%3 га) превышает площадь поля (%4 га) в цикле обработки %5'") в виде конкатенации и не сломай мозг.
20. Lapitskiy 902 21.08.19 07:42 Сейчас в теме
(5) быстродействие - лично проверял, простое сложение строк - это очень медленно
22. VmvLer 21.08.19 09:31 Сейчас в теме
(20) Согласен и это не раз уже было доказано в том числе и тут

поэтому придумали системный костыль СтрСоединить()
6. ArchLord42 68 19.08.19 18:38 Сейчас в теме
(4) кстати говоря, СтрШаблон очевидно медленее, чем простая конкатинация, при этом разница примерно 20%, так что смотря в каких условиях, а так да, читабельность как минимум лучше.
7OH; Summer_13; user883423; +3 Ответить
10. PLAstic 214 20.08.19 09:13 Сейчас в теме
(6) Бегло поискал, не нашёл. Была разгромная статья про быстродействие различных способов соединения строк и там раза в полтора оказался быстрее обычной конкатенации СтрШаблон(). Собственно, это не единственный способ, который быстрее обычной конкатенации, их ещё два как минимум. :)
Aleskey_K; +1 Ответить
15. ArchLord42 68 20.08.19 14:29 Сейчас в теме
(10)

вот вам не статья, а реальный замер :)
Прикрепленные файлы:
SlavaKron; insurgut; +2 Ответить
16. PLAstic 214 20.08.19 14:53 Сейчас в теме
(15) Шта??? У тебя сферический процессор в вакууме занимается выполнением одной задачи? Включай замер производительности и вторую картинку в ответ.
18. ArchLord42 68 20.08.19 17:26 Сейчас в теме
(16)

шта???

тебя


А вы точно, ИС с ми стой не перепутали? Не помню чтобы я с вами гдето братовался :(

У тебя сферический процессор в вакууме занимается выполнением одной задачи


Смелое заявление, только вот если бы он занимался чем то другим, то ему ничего не мешало бы повлиять и на замер производительности или замер как то отдельно от процессора расчитывается ?)
Lapitskiy; +1 Ответить
25. PLAstic 214 21.08.19 11:58 Сейчас в теме
(18) Именно. Замер по миллисекундам идёт в отрыве от процесса. Процессор занимается обслуживанием всех процессов, поэтому давай нагрузим его каким-нибудь копированием по сети и проведём замер, а потом при вычищенных процессах. Ты не знаешь, сколько времени процессор реально уделил твоим расчётам.
17. PLAstic 214 20.08.19 15:29 Сейчас в теме
(15) Вот замеры на реальной ситуации. Сообщение с 5 параметрами вполне реальное. Разрыв по времени ничтожен и с ростом кол-ва параметров уменьшается.
У меня не HLBD, конечно, но потуги отстаивать рудименты пятилетней давности (СтрШаблон появился 5 лет назад) выглядят как минимум нелепо.
Вдобавок, просто знайте, что это нарушение стандартов и методик разработки 1С. Специально зашёл и ещё раз проверил наличие там этого стандарта.
Прикрепленные файлы:
19. ArchLord42 68 20.08.19 17:32 Сейчас в теме
(17)
но потуги отстаивать рудименты пятилетней давности (СтрШаблон появился 5 лет назад) выглядят как минимум нелепо.


эээмм...я все понимаю, но надо же читать иногда комменты до конца, а не начинать брызгать слюной после первых 3 слов :)

так что смотря в каких условиях


Что можно перести так, "слепо юзать СтрШаблон так же не стоит", я не призываю его не юзать ибо это реально удобней, но в определенных условиях он начинает проигрывать самому простому способу.
24. SlavaKron 21.08.19 11:53 Сейчас в теме
(17) У вас некорректный замер в отличие от (15). Для выяснения реальной производительности, отладка должна быть выключена. По факту у вас основное время потратилось на переходы в цикле и фиксация их отладкой, поэтому числа у вас "грязные" — доля самой конкатенации в них мала.
26. PLAstic 214 21.08.19 12:00 Сейчас в теме
(24) Переходы в цикле и фиксация их отладкой были зафиксированы в отдельных строках таблицы, я их замазал. Имхо, отладка равномерно влияет на все команды, поэтому процентное отношение считаю верным.
И, Вячеслав, удиви меня, плз, технологией замера производительности без отладки?
Прикрепленные файлы:
27. SlavaKron 21.08.19 12:03 Сейчас в теме
(26)
процентное отношение считаю верным

2 / 3 <> 42 / 43
28. PLAstic 214 21.08.19 12:10 Сейчас в теме
9. Serj1C 476 20.08.19 08:38 Сейчас в теме
(4) Для коротких строк в контатенации нет ничего критичного. А переменные Стр11, ТекВремя - это да, плохо)
11. YanTsys 12 20.08.19 10:03 Сейчас в теме
(4) Был момент когда приходилось удалять эти новомодные функции из загружаемых обработок для тех пользователей у которых стояла более старая платформа, в то время гнилые помидоры летели в тех программистов которые использовали эти функции :)
7. DmitrySinichnikov 176 19.08.19 19:54 Сейчас в теме
То есть в цикле долбиться на сервер, даааа... решение. Вы бы хотя бы порционность сделали для приличия. Не ну понятно что и так работает, но вот потом подобные выкрутасы встречаешь и переписываешь... С матом...
PLAstic; u_n_k_n_o_w_n; Serj1C; +3 Ответить
8. ids79 3803 19.08.19 20:38 Сейчас в теме
Пожалуйста. Рад, что моя публикация сподвигла Вас на написание своей.
13. YanTsys 12 20.08.19 10:11 Сейчас в теме
Если перед вашей процедурой
НачатьПроведениеСервер(Стр11.Реализация);    // обращение на сервер

стоит директива &НаСервере
то эта статья просто эпик фейл
PLAstic; Yashazz; +2 Ответить
14. ambrozii 20.08.19 10:35 Сейчас в теме
(13) да, блин, тут 99.(9)% публикаций такие.
21. VmvLer 21.08.19 09:29 Сейчас в теме
(0) да чепуха это все и будет через пень-колоду работать когда у вас есть коллекция: список отобранных строк, тз, тч и т.д.

В реале в "тормознутых" процессах редко можно вычислить коллекции именно поэтому адетпы типовых отправляют такие процессы в фон и на вид вылезает котик. Я к котику еще прикрутил счетчик "прошло времени...1 час 2 минуты 5 сек..."

Считаю, что разработчики типовых реализовали механизм логически верно, а все попытки "насиловать" сервер передачами
управления с клиента ради бегунка - понты для приезжих.
23. Yashazz 2522 21.08.19 11:38 Сейчас в теме
(21) Соглашусь. Не публикация, а позорище. Причём не содержанием своим даже, а тем, что "это" оказалось в центре внимания и уже столько плюсов нагребло. Совсем уже докатились. Примитивный клиентский код с адским примером вызова сервера в цикле, за который убивать надо, а подаётся как откровение свыше.
Оставьте свое сообщение