![]() |
![]() |
![]() |
|
Индикатор выполнения обработки 1С8.2 (прогресс-бар) | ☑ | ||
---|---|---|---|---|
0
sda553
14.08.10
✎
08:17
|
Появились у кого-нибудь задумки как его сделать? Или это невозможно? Естественно обработка исполняется не на клиенте
|
|||
1
Defender aka LINN
14.08.10
✎
08:28
|
(0) Документацию читать пробовал?
|
|||
2
sda553
14.08.10
✎
08:56
|
(1) Нет...:) Но расскажи вкратце, что там об этом сказано?
|
|||
3
Defender aka LINN
14.08.10
✎
09:06
|
Там сказано, что все уже придумано. В функции "Состояние", например.
|
|||
4
Defender aka LINN
14.08.10
✎
09:07
|
Или как в 8.1 - через реквизит формы
|
|||
5
Abracadabra
14.08.10
✎
09:19
|
(0) его использовать получится только увеличивая серверные вызовы. Например, на сервере обрабатываем 10000 записей, тогда можно будет каждые 100 записей обновлять индикатор на клиенте, но тем самым мы получим 100 лишних вызовов сервера... Индикатор лучше использовать на локальных базах при нечастой обработке больших объемов данных, т. к. несколько минут задумчивости компьютера невольно наведут на мысль, что он завис, а индикатор все это легко опровергнет.
|
|||
6
sda553
14.08.10
✎
09:22
|
(5) Ну про увеличение серверных вызовов это предполагалось как решение в лоб. А вдруг у кого нибудь созрело изящное и гениальное решение
|
|||
7
Sarmen
19.08.10
✎
09:23
|
А вот такой вариант:
В форме - реквизит Индикатор (тип Число). Он выведен на форму как элемент Индикатор. В основной процедуре на сервере меняется его значение в цикле. Создаем обработчик ожидания на клиенте - с интервалом в 30 сек. - в нём одна строчка - ОбновитьОтображениеДанных(). Такой вариант - сработает? |
|||
8
Abracadabra
19.08.10
✎
09:46
|
(7) сработает, но это будет ничем не лучше, чем например на каждые 5 из 20 тысяч итераций на сервере, обновлять индикатор на клиенте прибавляя ему четверть его максимального значения.
|
|||
9
Sarmen
19.08.10
✎
10:28
|
а как вызвать из серверной процедуры клиентскую процедуру обновления индикатора?
|
|||
10
Evg-lylyk
19.08.10
✎
10:32
|
||||
11
Abracadabra
19.08.10
✎
10:44
|
(9) в книге "Разработка управляемого интерфейса" есть пример.
|
|||
12
Sarmen
19.08.10
✎
10:45
|
мне не подходит.... у меня в серверной процедуре - подключение к другой базе через COM-объект и загрузка примерно 360 000 записей в базу 1С. как применить вышеназванную ссылку - не представляю
|
|||
13
sda553
25.08.10
✎
08:15
|
Я так понял, что идея следующая. Обработка на сервере не передает свое состояние после каждой итерации, а передает его по таймеру раз в секунду или раз в пять секунд, что позволяет сократить число клиент серверных передач управления.
С ком объектом действительно сложность. А если как то запараллелить. Обработка в одной сессии исполняет чего то на сервере и инкреминирует какой то счетчик БД. Во второй сессии 1С клиентская обработка опрашивает этот счетчик и показывает индикатор ее выполнения. Ну или используя механизм фонового задания. Обработка исполняет свой код не сама а запуская фоновое задание. Фоновое задание инкреминирует какой то счетчик в БД. Обработка показывает индикацию состояния |
|||
14
Мимохожий Однако
25.08.10
✎
08:29
|
При начале работы обработки размести на форме текст "Ждите, идет обработка. Можно оправиться и покурить".. Это для особо нервных.
|
|||
15
sda553
25.08.10
✎
08:31
|
(14) "Откиньтесь на спинку кресла..."
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |