Фирма «1С» сообщила о новых возможностях будущего релиза 1С:Предприятие 8.3.26. Разработчики планируют реализовать отправку уведомлений с сервера в клиентское приложение средствами платформы.
В каких случаях требуется отправка уведомлений с сервера, и почему это было проблемой
Официальный технологический блог фирмы «1С» сообщил о том, что в платформе 1С:Предприятие 8.3.26 будет реализована отправка уведомлений клиентских приложений со стороны сервера без использования Системы взаимодействия.
Уведомления с сервера могут оповещать клиентское приложение о завершении каких-то длительных процессов – например, о завершении формирования объемного отчета. Сейчас для этого используются периодические обращения с клиента к серверу. Это приводит к дополнительной нагрузке и может повлиять на производительность.
В качестве альтернативного решения можно было использовать Систему взаимодействия. Однако разворачивать дополнительный сервер со своей SQL-базой ради одной задачи по отправке уведомлений не всегда рационально. Поэтому в версии платформы 8.3.26 технология отправки уведомлений от сервера к клиентским приложениям будет реализована средствами самой 1С.
Функциональность для работы с уведомлениями в Системе взаимодействия требует развертывания дополнительного сервера и собственного СУБД-сервера
Как будут отправляться уведомления с сервера на клиент в 1С 8.3.26
В новом релизе планируется реализовать объект МенеджерУведомленийКлиента. Методы нового объекта:
- ПодключитьОбработчик(<Ключ>, <Обработчик>): клиентский метод, подключает обработчик уведомлений клиента. Если параметр Ключ установлен в строковое значение – это строковое значение может быть в дальнейшем использовано для адресного отключения обработчиков. Если Ключ установлен в Неопределено, то обработчик будет вызываться для всех полученных уведомлений;
- ОтключитьОбработчик(<Ключ>): клиентский метод, отключает обработчик уведомлений клиента. Если Ключ установлен в Неопределено – отключает все обработчики;
- ОтправитьУведомление(<Ключ>, <Данные>, <Адресаты>): серверный метод, отправляет уведомление выбранным клиентским сеансам (если параметр Адресаты заполнен массивом номеров сеансов, полученных из СеансИнформационнойБазы.НомерСеанса) либо всем клиентским сеансам.
Для получения доступа к объекту МенеджерУведомленийКлиента в глобальный контекст будет добавлено свойство УведомленияКлиента (ClientNotifications).
А у объекта ФоновоеЗадание будет добавлено свойство НомерРодительскогоСеанса (ParentSessionNumber). С его помощью можно будет отправлять уведомления из фоновых заданий, корректно определяя адресата – клиентский сеанс, из которого это фоновое задание запущено.
Подробное описание изменений будет содержаться в технической документации к релизу.
Отдельно в анонсе оговаривается, что новый механизм будет обеспечивать гарантированную доставку уведомлений: «Если на сервере выполнен метод отправки, то независимо от дальнейшей судьбы процессов сервера (прекращение работы компонентов кластера или рабочих процессов), пока клиентский сеанс существует – будет предпринята попытка доставить это уведомление».
Полный текст заметки об отправке уведомлений с сервера на клиент в платформе 8.3.26