Индикатор выполнения обработки 1С8.2 (прогресс-бар) #499069


#0 by sda553
Появились у кого-нибудь задумки как его сделать? Или это невозможно? Естественно обработка исполняется не на клиенте
#1 by Defender aka LINN
Документацию читать пробовал?
#2 by sda553
Нет...:) Но расскажи вкратце, что там об этом сказано?
#3 by Defender aka LINN
Там сказано, что все уже придумано. В функции "Состояние", например.
#4 by Defender aka LINN
Или как в 8.1 - через реквизит формы
#5 by Abracadabra
его использовать получится только увеличивая серверные вызовы. Например, на сервере обрабатываем 10000 записей, тогда можно будет каждые 100 записей обновлять индикатор на клиенте, но тем самым мы получим 100 лишних вызовов сервера... Индикатор лучше использовать на локальных базах при нечастой обработке больших объемов данных, т. к. несколько минут задумчивости компьютера невольно наведут на мысль, что он завис, а индикатор все это легко опровергнет.
#6 by sda553
Ну про увеличение серверных вызовов это предполагалось как решение в лоб. А вдруг у кого нибудь созрело изящное и гениальное решение
#7 by Sarmen
А вот такой вариант: В форме - реквизит Индикатор (тип Число). Он выведен на форму как элемент Индикатор. В основной процедуре на сервере меняется его значение в цикле. Создаем обработчик ожидания на клиенте - с интервалом в 30 сек. - в нём одна строчка - ОбновитьОтображениеДанных. Такой вариант - сработает?
#8 by Abracadabra
сработает, но это будет ничем не лучше, чем например на каждые 5 из 20 тысяч итераций на сервере, обновлять индикатор на клиенте прибавляя ему четверть его максимального значения.
#9 by Sarmen
а как вызвать из серверной процедуры клиентскую процедуру обновления индикатора?
#10 by Evg-lylyk
#11 by Abracadabra
в книге "Разработка управляемого интерфейса" есть пример.
#12 by Sarmen
мне не подходит.... у меня в серверной процедуре - подключение к другой базе через COM-объект и загрузка примерно 360 000 записей в базу 1С. как применить вышеназванную ссылку - не представляю
#13 by sda553
Я так понял, что идея следующая. Обработка на сервере не передает свое состояние после каждой итерации, а передает его по таймеру раз в секунду или раз в пять секунд, что позволяет сократить число клиент серверных передач управления. С ком объектом действительно сложность. А если как то запараллелить. Обработка в одной сессии исполняет чего то на сервере и инкреминирует какой то счетчик БД. Во второй сессии 1С клиентская обработка опрашивает этот счетчик и показывает индикатор ее выполнения. Ну или используя механизм фонового задания. Обработка исполняет свой код не сама а запуская фоновое задание. Фоновое задание инкреминирует какой то счетчик в БД. Обработка показывает индикацию состояния
#14 by МимохожийОднако
При начале работы обработки размести на форме текст "Ждите, идет обработка. Можно оправиться и покурить".. Это для особо нервных.
#15 by sda553
"Откиньтесь на спинку кресла..."
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С