Как реализовать уведомления из 1С в локальную операционную систему при работе через RemoteApp?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с 1С в терминальном режиме, особенно через технологию RemoteApp, часто возникает сложная техническая задача: как оповестить пользователя о событии в программе так, чтобы уведомление появилось непосредственно в его локальной операционной системе (Windows или macOS). Проблема усугубляется тем, что сессия 1С изолирована на сервере, а пользователь может даже не держать программу открытой в данный момент. Разберем основные способы решения этой задачи — от простых штатных средств до продвинутых интеграций.

Использование штатных возможностей платформы 1С и RemoteApp

Начиная с версии платформы 8.3.10, 1С поддерживает отображение иконки в системном трее. Рассмотрим, как это работает в контексте терминального сервера. Когда пользователь запускает 1С через RemoteApp, приложение пытается интегрироваться в панель задач локальной машины. Проанализируем системные требования: для корректного проброса уведомлений необходимо, чтобы протокол RDP на стороне клиента был обновлен до актуальной версии, а на сервере (Windows Server 2016 и выше) были разрешены соответствующие групповые политики перенаправления уведомлений.

Однако стоит учитывать, что в режиме RemoteApp значок в трее может вести себя нестабильно. Выясним причину: сессия RemoteApp завершается или переходит в фоновый режим при закрытии основного окна, что прекращает работу всех механизмов оповещения внутри 1С. Поэтому перейдем к более надежным методам.

Оповещения через системные почтовые клиенты

Один из самых простых и эффективных способов, который не требует написания сложного кода на стороне клиента, — использование электронной почты. Рассмотрим алгоритм реализации подробнее:

  1. В конфигурации 1С настраивается регламентное задание, которое мониторит появление новых задач или событий.
  2. При наступлении события 1С отправляет письмо на почтовый адрес пользователя.
  3. На локальном компьютере пользователя (будь то Windows или macOS) настраивается штатный почтовый клиент (например, Почта Windows 10/11 или Apple Mail).

Главное преимущество этого метода в том, что современные операционные системы умеют показывать Toast-уведомления (всплывающие окна) даже при закрытом почтовом клиенте, если настроена фоновая синхронизация. Это позволяет пользователю увидеть сообщение мгновенно, не заходя в 1С. Разберем пример кода для отправки уведомления из 1С:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465;
Профиль.Пользователь = "robot@company.ru";
Профиль.Пароль = "password";
Профиль.ИспользоватьSSLSMTP = Истина;

Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = "robot@company.ru";
Сообщение.Получатели.Добавить("user@company.ru");
Сообщение.Тема = "Новая задача в 1С";
Сообщение.Тексты.Добавить("У вас новая задача! Пожалуйста, проверьте систему.");

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Почта.Отключиться();

Интеграция с Telegram-ботом как универсальное решение

Если в компании используется "зоопарк" устройств и разные почтовые сервисы, наиболее стабильным решением будет использование Telegram. Это позволяет доставлять уведомления как на рабочий стол (через Telegram Desktop), так и на мобильный телефон. Проанализируем шаги по созданию такой системы:

  1. Создаем бота через BotFather и получаем токен.
  2. В 1С создаем регистр сведений, где сопоставляем пользователей программы с их ChatID в Telegram.
  3. Используем HTTPСоединение для отправки сообщений.

Посмотрим на пример функции отправки сообщения через Telegram API:


Процедура ОтправитьУведомлениеВTelegram(ТекстСообщения, ChatID)
    Токен = "123456789:ABCDEFGH...";
    Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + ChatID + "&text=" + ТекстСообщения;
    
    Соединение = Новый HTTPСоединение("api.telegram.org", 443, , , , 10, Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(Ресурс);
    Ответ = Соединение.Получить(Запрос);
КонецПроцедуры

Создание собственного локального агента (HTTP-сервис)

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

Разберем архитектуру такого решения:

  1. В 1С публикуется HTTP-сервис, который по запросу выдает количество непрочитанных уведомлений для конкретного пользователя.
  2. На локальный ПК пишется скрипт (например, на Python или с использованием простых утилит типа Winsent), который раз в 1-5 минут опрашивает этот сервис.
  3. Если сервис возвращает наличие задач, локальная утилита вызывает системное уведомление.

Пример простейшего GET-запроса на языке 1С для HTTP-сервиса:


Функция УведомленияПолучить(Запрос)
    ИмяПользователя = Запрос.ПараметрыЗапроса.Получить("user");
    КоличествоЗадач = Задачи.ПолучитьКоличествоАктивныхЗадач(ИмяПользователя);
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(Строка(КоличествоЗадач));
    Возврат Ответ;
КонецФункции

Для вывода уведомлений в Windows можно использовать модуль BurntToast в PowerShell, а в macOS — команду osascript (AppleScript). Проанализируем пример команды для macOS, которую может инициировать локальный агент:

osascript -e 'display notification "У вас 5 новых задач" with title "1С:Предприятие"'

Работа через веб-клиент и Web Push

Если ваша инфраструктура позволяет отказаться от RemoteApp в пользу Веб-клиента, открывается путь к использованию технологии Web Push. Рассмотрим этот вариант: современные браузеры позволяют сайтам (в данном случае опубликованной базе 1С) отправлять системные уведомления. Начиная с платформы 8.3.15, 1С значительно улучшила работу с оповещениями в браузере. Даже если вкладка с 1С не активна, браузер сможет отобразить уведомление в центре уведомлений ОС, если пользователь разрешил это при первом входе.

Выводы и рекомендации

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

Важно помнить, что технические средства — это лишь половина успеха. Как отмечали участники обсуждения, в условиях "творческой среды" никакое уведомление не заменит административную дисциплину. Однако грамотно настроенная техническая "напоминалка" значительно снижает вероятность пропуска критически важных задач.

← На главную