При работе с 1С в терминальном режиме, особенно через технологию RemoteApp, часто возникает сложная техническая задача: как оповестить пользователя о событии в программе так, чтобы уведомление появилось непосредственно в его локальной операционной системе (Windows или macOS). Проблема усугубляется тем, что сессия 1С изолирована на сервере, а пользователь может даже не держать программу открытой в данный момент. Разберем основные способы решения этой задачи — от простых штатных средств до продвинутых интеграций.
Начиная с версии платформы 8.3.10, 1С поддерживает отображение иконки в системном трее. Рассмотрим, как это работает в контексте терминального сервера. Когда пользователь запускает 1С через RemoteApp, приложение пытается интегрироваться в панель задач локальной машины. Проанализируем системные требования: для корректного проброса уведомлений необходимо, чтобы протокол RDP на стороне клиента был обновлен до актуальной версии, а на сервере (Windows Server 2016 и выше) были разрешены соответствующие групповые политики перенаправления уведомлений.
Однако стоит учитывать, что в режиме RemoteApp значок в трее может вести себя нестабильно. Выясним причину: сессия RemoteApp завершается или переходит в фоновый режим при закрытии основного окна, что прекращает работу всех механизмов оповещения внутри 1С. Поэтому перейдем к более надежным методам.
Один из самых простых и эффективных способов, который не требует написания сложного кода на стороне клиента, — использование электронной почты. Рассмотрим алгоритм реализации подробнее:
Главное преимущество этого метода в том, что современные операционные системы умеют показывать Toast-уведомления (всплывающие окна) даже при закрытом почтовом клиенте, если настроена фоновая синхронизация. Это позволяет пользователю увидеть сообщение мгновенно, не заходя в 1С. Разберем пример кода для отправки уведомления из 1С:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465;
Профиль.Пользователь = "robot@company.ru";
Профиль.Пароль = "password";
Профиль.ИспользоватьSSLSMTP = Истина;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = "robot@company.ru";
Сообщение.Получатели.Добавить("user@company.ru");
Сообщение.Тема = "Новая задача в 1С";
Сообщение.Тексты.Добавить("У вас новая задача! Пожалуйста, проверьте систему.");
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Почта.Отключиться();
Если в компании используется "зоопарк" устройств и разные почтовые сервисы, наиболее стабильным решением будет использование Telegram. Это позволяет доставлять уведомления как на рабочий стол (через Telegram Desktop), так и на мобильный телефон. Проанализируем шаги по созданию такой системы:
BotFather и получаем токен.ChatID в Telegram.HTTPСоединение для отправки сообщений.Посмотрим на пример функции отправки сообщения через Telegram API:
Процедура ОтправитьУведомлениеВTelegram(ТекстСообщения, ChatID)
Токен = "123456789:ABCDEFGH...";
Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + ChatID + "&text=" + ТекстСообщения;
Соединение = Новый HTTPСоединение("api.telegram.org", 443, , , , 10, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КонецПроцедуры
Для продвинутых сценариев, когда требуется именно "моргающий значок" или специфическое окно в ОС, рассмотрим вариант разработки мини-утилиты. Эта утилита устанавливается локально на компьютер пользователя и работает в связке с 1С.
Разберем архитектуру такого решения:
Winsent), который раз в 1-5 минут опрашивает этот сервис.Пример простейшего GET-запроса на языке 1С для HTTP-сервиса:
Функция УведомленияПолучить(Запрос)
ИмяПользователя = Запрос.ПараметрыЗапроса.Получить("user");
КоличествоЗадач = Задачи.ПолучитьКоличествоАктивныхЗадач(ИмяПользователя);
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(Строка(КоличествоЗадач));
Возврат Ответ;
КонецФункции
Для вывода уведомлений в Windows можно использовать модуль BurntToast в PowerShell, а в macOS — команду osascript (AppleScript). Проанализируем пример команды для macOS, которую может инициировать локальный агент:
osascript -e 'display notification "У вас 5 новых задач" with title "1С:Предприятие"'
Если ваша инфраструктура позволяет отказаться от RemoteApp в пользу Веб-клиента, открывается путь к использованию технологии Web Push. Рассмотрим этот вариант: современные браузеры позволяют сайтам (в данном случае опубликованной базе 1С) отправлять системные уведомления. Начиная с платформы 8.3.15, 1С значительно улучшила работу с оповещениями в браузере. Даже если вкладка с 1С не активна, браузер сможет отобразить уведомление в центре уведомлений ОС, если пользователь разрешил это при первом входе.
Подводя итог, выберем оптимальную стратегию в зависимости от условий:
Важно помнить, что технические средства — это лишь половина успеха. Как отмечали участники обсуждения, в условиях "творческой среды" никакое уведомление не заменит административную дисциплину. Однако грамотно настроенная техническая "напоминалка" значительно снижает вероятность пропуска критически важных задач.