База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как отправить сообщение пользователю с сервера в 1С? › Ответ в теме: Как отправить сообщение пользователю с сервера в 1С?
Чтобы отправить сообщение пользователю с сервера в 1С, есть несколько распространённых способов, в зависимости от задачи и используемой платформы. Вот самые практичные варианты:
—
### 1. Через Константу и Обработчик Ожидания (Polling)
Суть: Сервер записывает сообщение в константу, а клиенты периодически опрашивают эту константу и показывают сообщение.
Как сделать:
— Создаёте константу строкового типа, например, «_Сообщение».
— На сервере пишете процедуру, которая устанавливает значение константы:
|
1 2 3 4 |
&НаСервереБезКонтекста Процедура ОтправитьСообщение(ТекстСообщения) Константы._Сообщение.Установить(ТекстСообщения); КонецПроцедуры |
— На клиенте в общем модуле или форме подключаете обработчик ожидания, который раз в N секунд проверяет константу и выводит сообщение, если оно новое.
|
1 2 3 4 5 6 7 8 9 10 11 |
Перем ТекущееСообщение; Процедура ПроверитьСообщение() НовоеСообщение = Константы._Сообщение.Получить(); Если НовоеСообщение <> ТекущееСообщение Тогда ТекущееСообщение = НовоеСообщение; Если ТекущееСообщение <> "" Тогда Предупреждение(ТекущееСообщение, 0); КонецЕсли; КонецЕсли; КонецПроцедуры |
— Обработчик ожидания запускается при старте клиента:
|
1 |
ПодключитьОбработчикОжидания("ПроверитьСообщение", 5); // каждые 5 секунд |
—
### 2. Через Систему Взаимодействия (Обсуждения)
В версиях 8.3.11 и выше можно использовать встроенную систему взаимодействия для отправки сообщений с сервера на клиент.
— Создаёте служебное обсуждение для пользователя.
— Сервер отправляет сообщение в это обсуждение.
— Клиент подписывается на новые сообщения и обрабатывает их.
Это более современный и эффективный способ, но требует настройки системы взаимодействия.
—
### 3. Push-уведомления на мобильные устройства (Firebase)
Если нужно отправить push-уведомления на мобильные клиенты, можно использовать Firebase Cloud Messaging (FCM).
— На мобильном клиенте получаете идентификатор подписчика.
— Сервер отправляет push через FCM API.
— Клиент получает и отображает уведомление.
—
### 4. Использование команды MSG (Windows)
Если все пользователи работают на Windows и в терминальных сессиях, можно с сервера запустить команду Windows MSG для вывода системного сообщения.
|
1 2 |
СтрокаКоманды = "MSG /server:" + ИмяКомпьютера + " * " + "Текст сообщения"; ЗапуститьПриложение(СтрокаКоманды); |
—
### Пример кода для варианта 1 (через константу):
Общий модуль «Уведомления»:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
&НаСервереБезКонтекста Процедура ОтправитьСообщение(Текст) Константы._Сообщение.Установить(Текст); КонецПроцедуры &НаКлиенте Перем ТекущееСообщение; Процедура ПроверитьСообщение() НовоеСообщение = Константы._Сообщение.Получить(); Если НовоеСообщение <> ТекущееСообщение Тогда ТекущееСообщение = НовоеСообщение; Если ТекущееСообщение <> "" Тогда Предупреждение(ТекущееСообщение, 0); КонецЕсли; КонецЕсли; КонецПроцедуры |
В форме или при старте клиента:
|
1 |
ПодключитьОбработчикОжидания("ПроверитьСообщение", 5); |
—
Рекомендую посмотреть здесь, там есть подробные примеры и объяснения:
https://infostart.ru/1c/articles/334073/
https://wonderland.v8.1c.ru/blog/peredacha-informatsii-s-servera/