Как настроить и запрограммировать уведомления для пользователей при входе в 1С

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

В процессе совместной работы в среде «1С:Предприятие 8» часто возникает необходимость оперативного информирования сотрудников о важных событиях. Типичный сценарий: пользователю или разработчику назначено «Задание №1», к исполнению которого необходимо приступить в определенную дату (например, 20.02). Идеальное решение — сделать так, чтобы при входе в информационную базу в указанный день пользователь сразу видел всплывающее окно или уведомление о необходимости начать работу.

В этой статье мы подробно разберем, почему простейшие попытки написать такой код «в лоб» часто приводят к ошибкам, и рассмотрим четыре эффективных и профессиональных способа реализации этой задачи.

Выясняем причину: почему простой код «ПриЗапуске» не работает?

Часто начинающие разработчики пытаются решить задачу простым добавлением кода в модуль управляемого приложения. На первый взгляд, алгоритм кажется очевидным: считать текущую дату, запросить базу данных на наличие задач и вывести предупреждение. Однако при этом они совершают две критические ошибки, из-за которых система отказывается работать или начинает сильно зависать:

  1. Контекст выполнения (Клиент / Сервер): Попытка вызвать интерактивные методы, такие как ПоказатьПредупреждение() или ПоказатьОповещениеПользователя(), непосредственно в серверном коде (например, в модуле сеанса или в серверных функциях) вызывает неустранимую ошибку. Интерактивные окна могут инициализироваться исключительно на клиенте.
  2. Замедление запуска системы: Если выполнять тяжелые и сложные запросы к базе данных непосредственно внутри процедур ПередНачаломРаботыСистемы или ПриНачалеРаботыСистемы, то каждый раз при входе пользователя программа будет долго «висеть» на этапе загрузки интерфейса. Это вызывает сильное раздражение пользователей.

Ниже мы подробно рассмотрим правильные методы обхода этих ограничений.

Способ 1. Использование стандартной подсистемы БСП «Напоминания пользователя»

Если ваша конфигурация разработана на базе Библиотеки стандартных подсистем (БСП) — а это справедливо для большинства современных типовых конфигураций (ERP, КА, УТ, УНФ, ЗУП, БП) — в ней уже присутствует готовый и очень удобный механизм напоминаний. Нам не нужно изобретать велосипед, достаточно правильно его настроить.

Разберем по шагам, как включить и настроить этот механизм:

  1. Перейдем в раздел Администрирование, далее выберем пункт Органайзер.
  2. В блоке Заметки, напоминания, анкетирование... установим флажок напротив опции Напоминания.

Теперь пользователи могут самостоятельно создавать напоминания к любым объектам системы, а разработчик может создавать их программно при записи документа «Задание».

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


МЗ = РегистрыСведений.НапоминанияПользователя.СоздатьМенеджерЗаписи();
МЗ.Пользователь = СсылкаНаРазработчика; // Кому предназначено напоминание
МЗ.ВремяСобытия = ДатаНачалаЗадания;   // Например, 20.02.2026 09:00:00
МЗ.СрокНапоминания = ДатаНачалаЗадания;
МЗ.Описание = "Необходимо приступить к выполнению Задания №1";
МЗ.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ВУказанноеВремя;
МЗ.Источник = СсылкаНаДокументЗадание; // Ссылка на документ-задание для быстрого перехода
МЗ.Записать();

При наступлении указанного времени у пользователя в 1С всплывет удобное окно поверх всех остальных окон. Пользователь сможет сразу открыть документ-источник в один клик, прекратить напоминание или отложить его на определенное время (например, на 15 минут или на 1 час).

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

Если вам необходимо написать собственное решение «с нуля» без привязки к БСП, то делать это нужно асинхронно. Мы применим подключение обработчика ожидания. Это позволит интерфейсу программы полностью загрузиться, и только через несколько секунд система выполнит легкую проверку и покажет красивое всплывающее оповещение.

Посмотрим на пример реализации. В Модуле управляемого приложения добавим следующий код:


Процедура ПриНачалеРаботыСистемы()
    // Подключаем однократный обработчик с задержкой в 5 секунд после старта системы
    ПодключитьОбработчикОжидания("ПроверитьНовыеЗаданияПриЗапуске", 5, Истина);
КонецПроцедуры

Процедура ПроверитьНовыеЗаданияПриЗапуске() Экспорт
    // Вызываем серверную функцию для быстрой проверки наличия задач на сегодня
    ЕстьЗадачи = ПроверитьЗадачиНаСервере(ПараметрыСеанса.ТекущийПользователь);
    
    Если ЕстьЗадачи Тогда
        // Показываем аккуратное всплывающее оповещение в правом нижнем углу экрана
        ПоказатьОповещениеПользователя(
            "Новые задания!", 
            "ПолучитьСсылкуНаЗадание()", 
            "Вам необходимо приступить к выполнению Задания №1", 
            БиблиотекаКартинок.Информация
        );
    КонецЕсли;
КонецПроцедуры

Этот подход гарантирует быстрый запуск программы без «зависаний» интерфейса. Функция ПоказатьОповещениеПользователя() не блокирует работу пользователя, плавно появляется на экране и так же плавно исчезает, оставляя уведомление в списке оповещений платформы.

Способ 3. Использование платформенной «Системы взаимодействия»

Начиная с версии платформы 8.3.10, разработчикам доступен мощный встроенный механизм — Система взаимодействия. Это полноценный чат и система видеозвонков, интегрированная непосредственно в платформу «1С:Предприятие».

Мы можем использовать Систему взаимодействия для отправки мгновенных сообщений от имени системы (робота) конкретному пользователю или разработчику:

Способ 4. Механизм бизнес-процессов и задач

С точки зрения методологии и архитектуры крупных систем управления предприятием (таких как ERP или CRM), самым правильным вариантом является использование стандартного механизма Бизнес-процессов и задач.

При таком подходе мы не используем навязчивые всплывающие окна, которые могут отвлекать пользователя от текущей работы. Вместо этого:

  1. Настраивается Рабочий стол (Начальная страница) пользователя.
  2. На начальную страницу выводится стандартный динамический список-виджет «Мои задачи».
  3. При входе в систему разработчик сразу видит актуальный и отсортированный по приоритетам и датам начала список задач, включая наше «Задание №1».

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

← На главную