Вход | Регистрация
 

Сообщения на клиенте с задержкой

Сообщения на клиенте с задержкой
Я
   Fuas4
 
23.06.20 - 15:27
Отцы, объясните мне, как теперь работает клиент 1С. На каком-то из релизов платформы стал замечать, что сообщения на клиенте выводятся с задержкой
Например, пишем:
&НаКлиенте
Процедура ЗагрузитьНаКлиенте()
Сообщить("Начало загрузки");
ЗАгрузитьНаСервере();
Сообщить("Конец загрузки");
КонецПроцедуры

Вот такая процедура сообщит "Начало загрузки", только когда вернется из процедуры "ЗагрузитьНаСервере"
Я подумал, может с Сообщить и СообщениеПОльзователю какая беда случилась и попробовал использовать "мотылятор" длительных операций. И там тоже самое: https://skr.sh/s2oFGUkbFeS
Сообщение "Начало..." появилось только когда с сервера процедура вернулась, а "Окончание" не выводится, хотя отладчиком я уже прошел эту строку

Как сейчас с пользователем взаимодействовать-то правильно, чтобы он своевременно мои сообщения видел?
   Franchiser
 
1 - 23.06.20 - 15:32
Всегда так было. Сразу вернет только если использовать фоновые задания или с подключением обработки ожидания разовой.
   Fuas4
 
2 - 23.06.20 - 15:34
(1) простите, а что оно возвращает на клиент? я на клиенте меняю заголовок поля. Почему надо "нырнуть" на сервер, чтобы обновить данные на клиенте?
   Franchiser
 
3 - 23.06.20 - 15:36
(2) ничего не понял, причем тут сервер. у тебя синхронный вызов серверной процедуры, сообщения появятся когда закончатся вызовы и клиентская форма разблокируется, до этого момент работа пользователя параллизована.
   Fuas4
 
4 - 23.06.20 - 15:37
(3) т.е. мне надо под сообщения делать отдельную процедуру на клиенте, которую вызывать из другой процедуры, или как?
Вот на моем примере, как мне ДО вызова серверной процедуры поменять заголовок поля?
   ДенисЧ
 
5 - 23.06.20 - 15:48
(4) Например, в фон передать
   Вафель
 
6 - 23.06.20 - 15:48
можно через обработсик ожидания
   Fuas4
 
7 - 23.06.20 - 15:49
ок, я попробую оба варианта
А можете объяснить, ПОЧЕМУ это так работает?
   ДенисЧ
 
8 - 23.06.20 - 15:50
(7) Это ТАК и должно работать.
   Franchiser
 
9 - 23.06.20 - 15:53
(7) Потому что это УФ, а не обычные формы
   Fuas4
 
10 - 23.06.20 - 15:54
Вы оба не ответили на вопрос, почему это так должно работать. Где то можно почитать про это?
   ДенисЧ
 
11 - 23.06.20 - 15:55
(10) В любом учебнике по программированию. Про последовательность выполнения вызовов процедур
   Vadim_37
 
12 - 23.06.20 - 15:58
   Fuas4
 
13 - 23.06.20 - 15:58
(11) вот из-за таких как ты, Миста и считается токсичным сообществом)
   Fuas4
 
14 - 23.06.20 - 15:59
(12) Спасибо!
   dezss
 
15 - 23.06.20 - 16:03
(13) Так он прав чуть более, чем полностью.
Синхронные вызовы - они такие. И были такими всегда и везде. А то, что в толстом выводилось, но при этом окно так же было заблокировано, это просто особенности вывода, но никак не выполнения кода.
   Franchiser
 
16 - 23.06.20 - 16:04
(14) что за конфигурация? если самописка то включи модальные вызовы.
   ДенисЧ
 
17 - 23.06.20 - 16:07
(13) Из-за таких, как ты миста считается чатом тупарей...
   fisher
 
18 - 23.06.20 - 16:28
(0) Насколько я понимаю, в УФ поменяли механизм вывода сообщений. В ОФ они выводились сразу в момент вызова, а в УФ ставятся в очередь и выводятся из очереди только когда пользовательский поток переходит в режим ожидания. То есть даже без серверных вызовов сообщения начнут выводиться из очереди только когда завершится клиентский вызов. Определенные неудобства это доставляет. Во время длительного КЛИЕНТСКОГО алгоритма выводить промежуточные сообщения - вообще без шансов.
   PR
 
19 - 23.06.20 - 16:31
(18) Используй состояние, нахрен тебе сообщить?
   fisher
 
20 - 23.06.20 - 16:33
(19) Я и так в курсе, что мне делать.
   Fuas4
 
21 - 23.06.20 - 16:46
(18) во, спасибо. Теперь понятно
   Fuas4
 
22 - 23.06.20 - 16:54
(18) Хотя стоп, а изменения заголовков элементов формы тоже в очередь встает?
   fisher
 
23 - 23.06.20 - 16:59
(22) Не проверял, но вроде вся отрисовка формы откладывается до завершения вызова. И с этим вероятно связана и фишка с сообщениями. В ОФ для них было отдельное окно со своими правилами, а в УФ они - часть формы.
   dezss
 
24 - 24.06.20 - 11:31
(18) +1
Не помню насчет ОФ, но в УФ еще можно и перехватить эти сообщения и не выводить вообще, а как-то обрабатывать. Еще один способ передать что-то с сервера на клиент или внутри клиента другому методу. Это моветон и костыль, конечно, но можно)))
   Fuas4
 
25 - 24.06.20 - 11:34
(23) Спасибо
   Tihon_aka_kot
 
26 - 24.06.20 - 15:42
(18) для таких нужд нужно использовать фоновые задания с контекстом клиента. 1С рекомендует если клиентский вызов дольше 8 сек (кажется) использовать выполнение в фоне. А сообщения можно выдергивать из фонового задания через ожидание. В БСП есть функция для этого в ОМ ДлительныеОперации
   Вафель
 
27 - 24.06.20 - 16:00
почему так? 1с так решила ибо уф и так тормозят а если еще формы обновлять сразу по ходу кода то ваще капут будет
   ДедМорроз
 
28 - 24.06.20 - 16:57
Сообщения выводятся сразу,если они с клиента,так как поймать их через сообщения пользователю нельзя,но отрисовка формы происходит только после окончания выполнения кода,причем,если на сервер не ходить,а просто на клиенте что-то долго делать,то тапки будут те же.


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