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