Сервер-клиентская передача данных

25.11.24

Разработка - Механизмы платформы 1С

В платформе 8.3.26 анонсировали новый механизм для передачи данных с сервера на клиент. Как нам с этим работать, постараюсь разобраться ниже.

С каждым новым релизом разработчики платформы все больше и больше удивляют нас нововведениями. Интеграции с соц. сетями, боты для общения с пользователями, пауза:) И новая, 26-я платформа не стала исключением. У нас появляется новый механизм вызова клиента с сервера. И называется он: МенеджерУведомленийКлиента (ClientNotificationManager).

Сама реализация очень проста и состоит из 3-х методов:

  1. ПодключитьОбработчик
  2. ОтправитьУведомление
  3. ОтключитьОбработчик

Подключаются и отключаются обработчики на клиенте, а отправка уведомления доступна только на сервере. 

Рассмотрим на примере. Напишем "Привет, Мир!", но только не в консоль, а другому пользователю.

Создадим обработку с кнопкой "Поздороваться" и строковым полем, где можно будет выбрать получателя:

 
 Скрин

Получателями у нас будут админы и пользователи, а искать их мы будем по роли:

 
 Модуль формы обработки

Метод ОтправитьУведомление принимает 3 параметра: Ключ, Данные, Адресаты.

Ключ - строка, по сути идентификатор рассылки. Именно по этому ключу можно подписываться и отписываться от рассылки.

Данные - произвольные данные, которые можно передать с сервера на клиент.

Адресаты - массив, элементами которого является число. Но не простое, а номер сеанса. Вот этот параметр вовсе не обязательный. Если передать пустой массив, или не указать параметр, сообщение будет разослано во все сеансы, которые подписаны на рассылку.

В нашем случае по роли мы находим активные сеансы и добавляем их в рассылку. Или же не добавляем, если пользователь не указан.

Теперь надо подключить обработчик. В модуле приложения напишем такой код:

 
 Модуль приложения

Тут все просто. При начале работы мы подписываемся на оповещения по ключу "Приветствие", при завершении работы - отписываемся.

Ну и надо создать общий модуль клиента для обработки описания оповещения:

 
 ОМ Обработчик

Это обработчик, который вызывается через описание оповещения, принимает 2 параметра:

  1. Данные - произвольный - объект, который передается 2-ым параметром метода ОтправитьУведомление
  2. ДополнительныеПараметры - произвольный - объект, который передается через описание оповещения
 
 Результат

Еще один вариант использования - отображение прогресса фонового задания. В библиотеке длительных операций есть коллбэки с отображением прогресса, но работают они через опрос сервера, и мы не можем поставить ежесекундное отображение статуса без потери производительности. К слову, в библиотеке длительных операций зашит механизм, который с каждой итерацией опроса сервера увеличивает срок до следующего опроса. Новый механизм не требует опроса сервера (это будет видно по счетчику вызовов на гифке).

Создадим форму для запуска фонового задания:

 
 Скрин

Описываем методы:

 
 Модуль формы

При открытии формы подписываемся на обработчик "Процесс", и описываем его описание оповещения.

Фоновое задание будет вызывать паузу, поэтому мы передадим количество секунд для паузы, и номер нашего сеанса, чтобы не рассылать состояние всем без исключения:

 
 ОМ Операции

Здесь все также, вызвали паузу, оповестили: 

 
 Результат

Я очень рад, что платформа развивается и обрастает полезными фишками. И при чтении списка изменений хочется скачать платформу и попробовать новые возможности.

 

Другие мои статьи:

Валидация JSON через XDTO

Генерация штрихкода и QR, разбор настроек и примеры

Расширяем возможности дополнительных обработок

Вступайте в нашу телеграмм-группу Инфостарт

Платформа сервер клиент уведомления

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    30644    TitanLuchs    106    

149

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    16795    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    20129    user2122906    9    

66

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    34828    user2122906    12    

62

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    31203    dsdred    100    

147

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    27573    bayselonarrend    22    

176

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    14985    dsdred    22    

86
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1549 27.11.24 00:00 Сейчас в теме
Интересно, а в мобильной разработке это будет актуально?
2. smit1c 107 27.11.24 10:35 Сейчас в теме
3. user2010831 8 13.04.25 22:43 Сейчас в теме
Попробовал этот механизм. Попробовал вывод уведомления из регламентного задания. Если подключаю обработчик при старте платформы, то при закрытии - еще секунд 20-30 висит процесс 1cv8c в памяти. Стоит убрать подключение обработчика, то закрытие происходит нормально. Если после вывода уведомления отключить обработчик и подождать некоторое время, то платформа так же закрывается нормально, если не ждать, то висит в памяти.
Пробовал в файловом варианте.
Для отправки сообщения требуется регистрация/авторизация