В процессе администрирования 1С:ERP Управление предприятием часто возникает необходимость оперативно проинформировать всех работающих в системе сотрудников о предстоящих технических работах, обновлении базы или других важных событиях. При этом важно сделать это максимально быстро, не прибегая к изменениям в конфигураторе и не выгоняя пользователей из системы без предупреждения. Рассмотрим подробнее доступные инструменты и методы, которые позволяют решить эту задачу штатными средствами платформы и прикладного решения. Для этой задачи есть универсальный инструмент администрирования и мониторинга пользователей.
Проанализируем наиболее современный и удобный способ — Систему взаимодействия. Этот механизм позволяет пользователям общаться внутри интерфейса 1С в режиме реального времени. Если в вашей организации она настроена, это идеальный канал для массовых оповещений.
Разберем по шагам, как организовать рассылку через этот инструмент:
Преимущество данного метода заключается в том, что сообщение не блокирует работу пользователя, но при этом гарантированно привлекает внимание за счет стандартных механизмов уведомлений операционной системы или платформы 1С.
Выясним, как поступить, если оповещение носит критический характер (например, через 15 минут база будет закрыта на обслуживание). Для этого в 1С:ERP, построенной на базе Библиотеки стандартных подсистем (БСП), предусмотрена обработка «Блокировка работы пользователей».
Рассмотрим алгоритм действий администратора:
Проанализируем ситуацию на стороне пользователя: платформа начнет автоматически выводить модальное окно с предупреждением и вашим текстом через определенные интервалы времени. Это самый надежный способ «достучаться» до тех, кто игнорирует чаты, так как окно блокировки перекрывает основной интерфейс программы.
Если в компании активно используется функционал бизнес-процессов, мы можем применить механизм Задач. Посмотрим на пример реализации:
Администратор может создать задачу и в качестве исполнителя указать роль ВсеПользователи (если такая роль настроена в системе) или программно/вручную создать копии задачи для каждого сотрудника. При появлении новой задачи у пользователя сработает стандартное оповещение 1С.
Для реализации через программный код (в обработке или консоли кода) это выглядело бы примерно так:
Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
Задача.Автор = Пользователи.ТекущийПользователь();
Задача.Дата = ТекущаяДата();
Задача.Наименование = "Внимание! Технические работы в 16:00";
Задача.Важность = Перечисления.ВариантыВажностиЗадачи.Высокая;
Задача.Исполнитель = ГруппаПользователейВсе;
Задача.Записать();
Разберем еще один «хитрый» способ, упомянутый на форуме — использование механизма Напоминаний. Хотя стандартно пользователь создает напоминания «для себя», администратор с правами доступа к регистру сведений НапоминанияПользователей может создать записи для любого списка сотрудников. Для этой задачи есть расширение для гибкой настройки напоминаний пользователям.
Посмотрим, как это работает изнутри:
Пользователю и имеет ВремяСобытия.Если стандартных окон БСП недостаточно, проанализируем возможность применения расширений (.cfe). Расширения позволяют добавить кнопку «Оповестить всех» в интерфейс администратора, не снимая основную конфигурацию с поддержки.
В коде такого расширения обычно используется метод ПоказатьОповещениеПользователя. Этот метод выводит всплывающее окно, которое не требует нажатия кнопки «ОК» и не прерывает процесс ввода данных.
Пример вызова метода в коде:
ТекстСообщения = "Сервер будет перезагружен через 5 минут!";
ПоказатьОповещениеПользователя("ВНИМАНИЕ АДМИНИСТРАЦИИ", , ТекстСообщения, БиблиотекаКартинок.ВажнаяИнформация);
Для системных администраторов, предпочитающих автоматизацию через скрипты, рассмотрим работу с серверным кластером. С помощью утилиты rac.exe можно управлять сеансами. Хотя прямой функции «отправить сообщение в окно» в самом кластере нет (кроме текста при разрыве соединения), через скрипты можно инициировать запуск внешних событий в сеансах, если в конфигурации предусмотрены соответствующие обработчики ожидания.
Однако наиболее практичным «админским» способом остается отправка сообщения при завершении сеанса — для этого подойдёт обработка принудительного завершения сеансов с уведомлением. Пользователь увидит сообщение «Сеанс завершен Администратором: [Ваш текст]». Это радикальный метод, но он гарантирует, что информация будет прочитана в момент закрытия программы.
Подводя итог нашему анализу, выберем оптимальный путь в зависимости от ситуации:
Помните, что эффективность оповещения зависит от того, насколько оно мешает работе. Для простых объявлений лучше использовать неблокирующие методы (Система взаимодействия), а для критических — механизмы блокировки сеансов.