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

Вывод данных на форму в режиме клиент-сервер

Вывод данных на форму в режиме клиент-сервер
Я
   kors_
 
14.02.20 - 17:24
Задача, наверное, банальная и простая, но всё же.
Предположим. Есть форма, на ней одна кнопка. По команде с клиента вызывается серверная процедура.
Перед началом выполнения серверной процедуры, нужно произвести действия на клиенте - например, показать декорацию формы и вывести сообщение. После выполнения - скрыть.
 
 
   acht
 
1 - 14.02.20 - 17:25
И?
   kors_
 
2 - 14.02.20 - 17:27
(1) действия на клиенте (все) выполняются после завершения серверной процедуры и возвращения на клиент. то есть и то, что нужно "до" и то, что нужно "после".
   acht
 
3 - 14.02.20 - 17:30
Кнопка отрисовывает декорацию и ставит обработчик ожидания. Обработчик вызывает сервер, после возвращения управления отрисовывает нужное.
   Лефмихалыч
 
4 - 14.02.20 - 17:33
&НаКЛиенте
Процедура онКнопка(кнопка)
    ПоказатьХернюНаКлиенте();
    ВызватьСервернуюПроцедуру();
    СкрытьХЕрнюНаКлиенте();
КОнецПроцедуры
   acht
 
5 - 14.02.20 - 17:35
(2) Они выполняются в нужном порядке. Только не отрисовываются до окончания серверного вызова. Чтобы разорвать поток и обеспечить отрисовку - подключают обработчик ожидания на минимальный интервал.
   1Сергей
 
6 - 14.02.20 - 17:43
(4) +1
   eTmy
 
7 - 14.02.20 - 17:58
(3) это пять
   fisher
 
8 - 14.02.20 - 18:03
(5) Не пробовал, но возможно для разрыва потока и отрисовки будет достаточно чего-то вроде ВыполнитьОбработкуОповещения(). Все красивше, чем обработчик ожидания.
   kors_
 
9 - 14.02.20 - 18:10
(4) (6) увы, но нет


(5) (8) обработчик ожидания для вызова клиентской процедуры перед серверной? Не разъясните чуть подробнее? Спасибо
   kors_
 
10 - 14.02.20 - 18:13
В общем да, порядок условно понятен - при вызове 3 серверных процедур отрисовка действительно происходит после 1. Но как это теперь написать, чтобы глаза от своего же кода выпадали. И правильно ли вообще так делать...
   fisher
 
11 - 14.02.20 - 18:22
(10) Не очень правильно. Синхронный серверный вызов все равно "завесит" клиента и толку от дополнительных телодвижений будет мало. Принято длительные серверные вызовы делать фоновым заданием. Тогда мало того что на клиенте можно отобразить прогресс, клиент может во время его выполнения переключиться на другую работу. В БСП для этого целая подсистема, а на инфостарте - куча статей по использованию.
   lodger
 
12 - 14.02.20 - 18:25
   kors_
 
13 - 14.02.20 - 18:26
(11) понятно, а если заведомо известно, что обработчик выполнится за 5-10 секунд - есть смысл вот так заморачиваться? Или в любом случае правильнее делать именно так?
   fisher
 
14 - 14.02.20 - 18:36
(13) Оно-то правильнее, но стоит ли овчинка выделки - решать вам. Скажу так - либо вообще не заморачиваться, либо уж через фоновое.

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