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