gifts2017

[8.2] Шаблон обработки с индикацией прогресса выполнения (управляемые формы)

Опубликовал Василий Демидов (Душелов) в раздел Программирование - Практика программирования


- Обработка выполняется на сервере
- Отображение хода выполнения обработки с расчетом оставшегося времени.
- Возможность прерывания выполнения обработка (CTRL + Break)

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

Наименование Файл Версия Размер
Шаблон обработки 1105
.zip 4,22Kb
12.02.10
1105
.zip 4,22Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. dushelov (Душелов) 12.02.10 15:28
Конечно, результат можно хранить и в глобальной переменной в течении сеанса, но на это требуется доработка конфигурации (использование общего модуля).
2. Евгений Люлюк (Evg-Lylyk) 12.02.10 17:01
Устал уже писать ... зачем обработку 7 кб паковать zip-ом? Только лишняя возня с распаковкой
То как в 8.2 реализована функция Состояние мне сразу приглянулось, но непонятно как по нормальному это использовать т.к. доступна она только на клиенте.
Расстроило что нельзя указать картинку gif вроде тех которые генерируются здесь http://www.ajaxload.info/
Проблема как делать "нормально" индикацию процессов в 8.2 очень интересная тема
Думал может делать функцию вроде Работать(), которая возвращает ложь пока все не сделает и сама контролирует индикацию. Но тут есть проблема с передачи данных многочисленными серверными вызовами в случае "живой" индикации.

p.s.
Глянул код ) прошедшее время в формате ЧЧММСС получал чуток по другому:

Функция ПолучитьВремяВФорматеЧЧММСС(ПрошлоСекунд) Экспорт

ТекстПрошВремя = ПолучитьТекстПоШаблону("%0:%1:%2",Формат(ПрошлоСекунд/3600,"ЧЦ=2;ЧН=;ЧВН="),
Формат(ПрошлоСекунд%3600/60,"ЧЦ=2;ЧН=;ЧВН="),
Формат(ПрошлоСекунд%60,"ЧЦ=2;ЧН=;ЧВН="));

Возврат ТекстПрошВремя;

КонецФункции
3. dushelov (Душелов) 12.02.10 17:53
(2) > зачем обработку 7 кб паковать zip-ом
Некоторые браузеры расширение епф не знают, и открывают их как текст :)

>нельзя указать картинку

Картинку можно указать в "ПоказатьОповещениеПользователя"

Ну я пока вариантов, как в предложенной здесь - не знаю.
Пробовал и через обновление отображения элемента на форме - все работает только после окончания всего цикла.

А время - я здесь у кого-то "подглядел" ;)
4. dushelov (Душелов) 12.02.10 17:58
+3 ну это все без ActiveX-ов и ВК, конечно же :)
С ВК-то все просто.
5. Евгений Люлюк (Evg-Lylyk) 12.02.10 18:14
(3)
Некоторые браузеры расширение епф не знают, и открывают их как текст

У меня вроде все норм. Крайне редко жму "сохранить по ссылке как". мое мнение кому надо тот нажмет. Проверил в браузерах Opera 10.1, 10.5, EI6, EI7 нормально работает!!! других браузеров нет
Картинку можно указать и для функции Состояние, только толку если указывать анимационный gif он не анимируется
Ну я пока вариантов, как в предложенной здесь - не знаю

Я имел ввиду функ. Работать (СписокОбработавемыхДокументов, НачинатьСДокумента)
которая раз в секунду возвращает количество оставшихся документов для обработки. Вызываем ее до того пока все не отработает и выводим индикацию.
6. dushelov (Душелов) 12.02.10 18:17
(5) Еще у меня был вариант - фоновое выполнение с подключение обработки ожидания на опрос состояние выполнения. Но тут уже есть ограничения - доработка конфигурации + серверный вариант платформы.
7. dushelov (Душелов) 12.02.10 18:18
(5) >gif он не анимируется
А на обычной форме анимируется? Тогда можно сделать подмену стандартного "Состояние" на свою форму.
8. Евгений Люлюк (Evg-Lylyk) 12.02.10 18:42
(6) да фоново это наверно наилучший вариант, надо подумать.
(7) на обычной форме анимируется, правда я для проверки добавлял на форму анимировался может не будет работать после вызова сервера.
На обычной форме не нарисуешь прогресс бар.
9. dushelov (Душелов) 12.02.10 19:06
(6) Да там думать не надо :) Сложностей никаких. Не нравится только использование обработки ожидания
(7) Да ладно? Поле индикатора никто не отменял!
10. Евгений Люлюк (Evg-Lylyk) 12.02.10 22:03
(9)
Да ладно? Поле индикатора никто не отменял!

да действительно )
Да там думать не надо Сложностей никаких. Не нравится только использование обработки ожидания
надо чтобы без фоновых заданий вот над чем нужно подумать.
11. dushelov (Душелов) 12.02.10 22:07
(10) Без фоновых только так. Инициировать обход цикла на клиентской части с индикацией и прерыванием. А обрабатываемые данные хранить на сервере.
12. urbanist Железняков (urbanist) 17.02.10 09:52
Должно быть, полезная штука, попробую, + авансом.
13. rasswet (rasswet) 01.04.10 08:33
на партнерском 1с говорит что так сделать анриал))
Молодец :!:
14. Илья Бушин (verybig) 19.09.10 23:17
Мегажесть! Думал действительно что-то путёвое...
Количество вызовов сервера и трафик между клиентом и сервером сводит всю идею в трэш.
(13) Правы на партнерском. Невзлетает.
15. Александр Медведев (anig99) 06.12.10 01:18
(11) а с фоновым пробовали? У меня вообще полный затык...
ПолучитьСообщенияПользователю - не работает
а через хранилище работает только один раз. Т.е. делаю обработку для передачи данных из фонового задания через хранилище. Первый раз проходит нормально. Второй раз данные не передаются если не закрыть/открыть форму.
16. Василий Демидов (Душелов) 06.12.10 02:00
(14) Все можно свести к минимуму, индикацию сделать реже.
Почему не взлетит? У меня год как работает - без подобной индикации некоторые вещи пользователям неудобны совсем. И даже можно опустить производительность системы.

(15) Надо попробовать, но не думаю, что из этого что-то путевое выйдет.
17. Александр Медведев (anig99) 06.12.10 07:40
(16)да дело даже не в самой индикации, а в невозможности передать через хранилище данные для одного экземпляра родительской формы из фонового задания больше 1го раза. Не пойму, то ли я что-то не правильно делаю, то ли это глюк платформы... Не могли бы у себя проверить? Простое фоновое задание, которое выводит сообщение 2 способами: через Сообщить() и через временное хранилище. И запустить в обработке 2 раза с перерывами, чтобы задание отработали. У меня ФоновоеЗадание.ПолучитьСообщенияПользователю просто не работает оба раза, а во временное хранилище второе раз фоновое задание ничего не пишет.
18. Илья Галицков (galich) 19.01.11 14:14
anig99 пишет:
У меня ФоновоеЗадание.ПолучитьСообщенияПользователю просто не работает оба раза

Тоже не получается отрабатывать :( может это глюк платформы? Или надо доп.параметр какой-то передавать?
20. Айрат Усманов (centr1) 08.11.11 10:53
обработка работает на любой конфигурации?да? скачаю гляну,спасиб:)
21. nitro (nitr02k) 06.12.11 15:15
Как раз искал такую штуку
22. red eye (redeye911) 22.12.11 09:28
Очень полезно оказалось.
23. Юрий Патласов (NoRazum) 15.05.12 16:28
Не очень доволен результатом обработки
24. Ольга (_n26__) 08.01.13 21:25
25. Александр Зорин (Manticor) 28.03.13 22:36
(1) Автор, скажите пожалуйста - как сделать чтобы спр. КОнтрагенты выводился в реальном времени, а то у меня в конфе в спр около 2000 записей, запрос вмиг выводит а с этим прогресом показывает что осталось 40 минут(((
26. Александр Лобачёв (SANILLA) 05.10.13 02:57
27. Александр Лобачёв (Myskyl) 05.10.13 03:00
благодарю, щас скачаю, мож пригодится
28. Victor Victor (skvic) 30.10.13 09:21
29. Дмитрий Топчий (hakerxp) 16.04.14 09:01
Данный шаблон имеет место быть, но при больших объемах данных, данный способ не оптимален т.к. между клиентом и сервером будут бегать большие объемы данных. Это очень будет влиять на производительность. Так что придется искать компромисс между производительностью и информативностью.
30. Pavel (elik1972) 17.02.15 14:18
Пока не пригодиться, но возьмем на заметку. Спасибо!
31. Михаил Григорьев (Mails79) 27.05.15 14:43
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа