Имя: Пароль:
1C
1С v8
v8: Механизм сообщений пользователю в 8.2
0 Kaidend
 
12.12.11
21:33
Всем привет.

Интересно, а никто не интересовался механизмом "закадровой" работы сообщений пользователю в 8.2? Я имею в виду объект встроенного языка СообщениеПользователю.

Можно, например, из какой-то формы передать управление в общий модуль на сервер, оттуда "отправить" сообщение пользователю и оно найдет ту форму, откуда был инициирован серверный вызов. Можно организовать целую цепочку процедур на сервере, вызывающих друг друга, пока где-то на пятом уровне вложенности какая-нибудь процедура не отправит сообщение на клиент - оно все равно найдет нужную форму.

Как это происходит?

Ведь сервер не может обратиться к клиенту и, по идее, не должен знать, какой именно клиент в данный момент вызвал исполнение серверного кода. В ходе сервернего вызова сервер каким-то неявным образом возвращает те сообщения, которые должен показать клиент? И получается в любой момент исполнения кода на сервере этот код имеет какую-то информацию, позволяющую найти вызвавшего его клиента?
1 Reaper_1c
 
12.12.11
21:42
Балбес, для каждого клиента на сервере открывается сеанс, код исполняется в рамках сеанса, т.е искать клиента не надо, его идентификатор есть в любой момент времени. Класс сообщение пользователю изначально привязывается к объекту - эта связь и едет на клиента. Координаты всплытия сообщения - точнее некуда, промазать невозможно.
2 Armando
 
12.12.11
21:42
>> и оно найдет ту форму, откуда был инициирован серверный вызов
Не найдет. До какого-то релиза сообщение привязывалось к активному окну.
Сейчас в объекте СообщениеПользоваелю можно указать идентификатор формы.
3 Kaidend
 
12.12.11
21:52
(1) Во-первых, не хами, дурачок.
Во-вторых, пусть даже сеанс пользователя существует на сервере (черт, я и забыл про него), но сам сервер не может вызывать клиента с целью ему что-то передать, не та идеология в 1С.

(2) Возможно.

Любопытно все-таки, как это происходит. Сервер сам не может обратиться к клиенту с чем-то типа "эй, у меня тут для тебя сообщения есть". Подозреваю, что в ходе серверного вызова сервер просто возвращает на клиент неявно какие-то выходные параметры, в т. ч. сообщения, а дальше клиент их уже показывает после завершения работы сервера.
4 IamAlexy
 
12.12.11
21:57
(3) поставь демку БСП и открой для себя много нового...
5 andrewks
 
12.12.11
21:57
есть некая "очередь", которая считывается и обрабатывается клиентом.
это не сервер стучится до клиента, это клиент стучится до сервера
6 Reaper_1c
 
12.12.11
22:19
(5) Да ну? Что-то счетчик вызовов не крутится и активности на клиенте нет, пока серверный вызов происходит. Ежели б сервер не мог передать информацию клиенту сеть постоянно была бы нагружена клиентом, долбящимся о сервер подобно дятлу и смысла в тонком клиенте на было бы вовсе.
7 H A D G E H O G s
 
12.12.11
22:21
(6) Долбления в сервер по теме "есть чо" - настолький мизер, что его и в счетчике показывать не надо.
8 ДенисЧ
 
12.12.11
22:23
(6) А зачем ему постоянно долбиться? Закончился серверный вызов - стукнулся...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший