Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Сообщить на клиенте, в цикле, на форме внешней обработки, в реальном времени.

Сообщить на клиенте, в цикле, на форме внешней обработки, в реальном времени.
Я
   Oblako486
 
25.03.21 - 18:44
Почему сообщения копятся, функция сообщить ведь на клиенте?
Как сделать чтобы в реальном времени выводилось?

&НаКлиенте
Процедура ПереподставитьДоговорСчетНаОплату(Команда)
    выборкаДокументы = ЗапросСчетов();
    для каждого впДокумент из выборкаДокументы цикл
        ПереподставитьДоговорСчетНаОплатуНаСервере(впДокумент);
        Сообщить(впДокумент) ;
    конецЦикла;
КонецПроцедуры

   breezee
 
1 - 25.03.21 - 19:43
через шэлскрипты прям виндой говорить)
   Oblako486
 
2 - 25.03.21 - 22:28
(1) Вообще вариантов нет?
   Юрий Лазаренко
 
3 - 25.03.21 - 22:33
(0) Потому что функция синхронная, она блокирует интерфейс на время своего выполнения. Нужно в реальном времени - используй ПодключитьОбработчикОжидания внутри цикла, в каждом обработчике выполняй  ПереподставитьДоговорСчетНаОплатуНаСервере(впДокумент); и Сообщить(впДокумент) ;
   asady
 
4 - 25.03.21 - 22:34
(2 интересно а зачем такое требование - чтоб в реальном времени.
Что от этого зависит?
   Oblako486
 
5 - 25.03.21 - 22:38
Пользователю непонятно выполняется или зависла. А так можно было бы видеть какой документ обрабатывается. Документов много.
   acht
 
6 - 25.03.21 - 22:40
(5) Фоновые операции и сообщение прогресса
   hhhh
 
7 - 25.03.21 - 22:42
(5) ну, вы уже сказали пользователю, что Сообщить увеличивает время работы в 10 раз? Оно это ему надо? Ждать лишние полчаса?
   Юрий Лазаренко
 
8 - 25.03.21 - 22:46
(6) При фоновых операциях надо за их состоянием на сервер ходить, а это состояние надо где-то хранить. Кроме того, сервер не может уведомить клиента, что документ только что был обработан, поэтому сервер будет опрашиваться с клиента с определенной периодичностью и отображение может перескакивать сразу через несколько документов. Плюс фоновой операции - интерфейс программы не блокируется, можно параллельно работать в программе.
Если на форме делать, то состояние можно хранить непосредственно в реквизитах формы. Событие окончания обработки каждого документа сработает моментально, сообщение отобразится тоже моментально. Минус - интерфейс блокируется на время обработки документа и освобождается только на доли секунды после вывода сообщения и перед переходом к обработке следующего документа, то есть, работать в программе будет невозможно.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.