Имя: Пароль:
1C
1С v8
Как можно обновлять строку состояния?
0 Garry1010
 
18.12.13
10:49
Давно уже висит один вопрос... Пробовал придумать через ФоновыеЗадания или через ОбработчикОжидания - что-то не вышло.
Суть такая: через COM-объект запускается выполнение серии достаточно длительных операций - при запуске каждой операции, конечно, в строку состояния выдаётся информация, но пока идёт обработка в COM-соединении переключение на программу выдаёт вид зависания (что естественно). Так вот хочется, чтобы что-то в фоне как-то обновляло строку состояния.
Обработчик ожидания срабатывает только после того, как управление выходит из COM-соединения. А фоновые задания, как я понимаю, вообще не имеют доступа к окну запустившей их программы.
Кто-то может что-то предложить для решения этого вопроса?
1 Defender aka LINN
 
18.12.13
10:50
Смириться
2 Garry1010
 
18.12.13
11:16
(1) И всё? :((
3 Рэйв
 
18.12.13
11:21
Запускай обработчик СOM в цикле на стороне вывывающей базы и формируй строку локадльно
4 Garry1010
 
18.12.13
11:45
(3) Не понял. Какую строку - строку состояния? Всё равно не уловил суть...
5 alexei366
 
18.12.13
11:46
(0) Ну можно заморочиться конеш: создать регистр сведений с измерением уник идентификатор при вызове из формы серверной процедуры создать запись в нем  с новым идентификатором, вызвать фоновое передая ему наш уник инд и меняешь реквизить записи регистра (к примеру процент выполнения), а на клиенте запускаешь обработчик ожидания где постоянно обращаешься к серверу и вытаскиваешь статус по нашему уник ид и выводишь пользователю (можно сделать чтоб фоновое по завершению удаляла запись, а на клиенте при отсуствии записи выводить готово, или же с клиента если уже завершенно удалять запись)
6 Garry1010
 
18.12.13
12:17
(5) Не выйдет, я же проверил (см. выше) работу обработчика ожидания. Он срабатывает только когда клиента отпускает COM-соединение - пока оно работает ожидалка не вызывается. Как и описано в документации, кстати.
7 alexei366
 
18.12.13
15:09
(6) Так ты запусти из клиента фоновое задание, а уже в фоновом COM запускай. Если ты с клиента (или с вызванной серверной процедурой из клиента) COM запускаешь то естественно пока управление будет у запущенной процедуры