Как отправить уведомление пользователю в 1С:Документообороте без создания лишних задач

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

При работе в 1С:Документообороте (ДГУ) часто возникает ситуация, когда необходимо просто проинформировать пользователя о событии, например, о завершении согласования документа в другом подразделении. Стандартный механизм «Ознакомления» в процессах не всегда удобен, так как он создает задачу, которую пользователь обязан «исполнить» (нажать кнопку «Ознакомился»). Это создает лишний информационный шум и требует лишних действий. В этой статье мы разберем, как реализовать «легкие» уведомления в «колокольчик» или на почту, не прибегая к созданию задач.

Анализ проблемы: почему задачи-ознакомления — это не всегда выход

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

Способ 1: Использование дополнительных обработчиков бизнес-событий

Это наиболее архитектурно верный и гибкий способ для 1С:Документооборота. Система уже содержит механизм бизнес-событий, которые фиксируют изменения в объектах. Нам остается только «подписаться» на нужное событие и выполнить код отправки уведомления. Разберем этот процесс по шагам.

Перейдем в раздел Настройка и администрирование — Бизнес-события — Дополнительные обработчики. Здесь мы можем создать скрипт на языке 1С, который выполнится при наступлении события (например, при установке статуса «Согласован» у документа). Основное преимущество — нам не нужно менять конфигурацию в конфигураторе.

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


// Проверяем, что событие относится к нужному нам виду документа
Если ТипЗнч(Источник) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
    Если Источник.Статус = Перечисления.СтатусыДокументов.Согласован Тогда
        // Логика определения получателей (например, из подразделения Б)
        МассивПолучателей = ПолучитьПолучателейУведомления(Источник.Подразделение);
        Для Каждого Получатель Из МассивПолучателей Цикл
            // Вызываем процедуру отправки
            РаботаСУведомлениями.ОтправитьУведомлениеОбОбъекте(Источник, Получатель, "Документ согласован!");
        КонецЦикла;
    КонецЕсли;
КонецЕсли;

Способ 2: Программная запись в очередь уведомлений

Выясним, как работает система уведомлений «под капотом». Когда система хочет что-то отправить пользователю, она делает запись в регистр сведений ОчередьУведомлений. Специальное регламентное задание периодически считывает этот регистр и рассылает сообщения по настроенным каналам (почта, SMS, окно программы). Мы можем напрямую использовать этот механизм.

Рассмотрим пример кода, который можно вставить в модуль документа или в обработку, чтобы «вбросить» уведомление в систему:


НоваяЗапись = РегистрыСведений.ОчередьУведомлений.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Пользователь = НужныйПользовательСсылка;
НоваяЗапись.Объект = СсылкаНаДокумент;
НоваяЗапись.ВидСобытия = Справочники.ВидыБизнесСобытий.НайтиПоНаименованию("Прочее");
НоваяЗапись.ТекстУведомления = "Уважаемый коллега, документ " + СсылкаНаДокумент + " прошел согласование.";
НоваяЗапись.Записать();

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

Способ 3: Настройка правил уведомлений для ролей

В современных версиях ДГУ (начиная с 2.1 и в 3.0) предусмотрена гибкая настройка через интерфейс. Зайдем в Настройки — Настройки уведомлений — По объектам. Здесь можно создать правило, которое будет срабатывать при завершении процесса.

Посмотрим на возможности этого метода:

  1. Можно указать конкретное событие: «Завершение процесса согласования».
  2. В качестве получателей можно выбрать не только автора или участников, но и Роли исполнителей или конкретных пользователей.
  3. Система сама определит канал доставки (Push, Email или всплывающее окно).

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

Способ 4: Использование Системы взаимодействия (чат 1С)

Если в вашей организации развернут сервер взаимодействия, это отличный способ уведомлять пользователей мгновенно и без лишнего мусора в почте. Сообщение придет пользователю в чат 1С, и он сможет сразу перейти к документу по навигационной ссылке.

Проанализируем пример отправки сообщения в чат программным путем:


// Получаем обсуждение (контекстное или личное)
ТекстСообщения = "Документ согласован. Ссылка: " + ПолучитьНавигационнуюСсылку(Объект.Ссылка);
Сообщение = СистемаВзаимодействия.СоздатьСообщение(ИдентификаторОбсуждения);
Сообщение.Текст = ТекстСообщения;
Сообщение.Записать();

Этот метод является наиболее современным и «легким» для восприятия пользователем, так как напоминает привычные мессенджеры и не требует формального завершения каких-либо задач.

Рекомендации по выбору метода

Выясним, какой метод подойдет именно вам:

Таким образом, мы убедились, что в 1С:Документообороте существует множество способов уведомить пользователя без создания «зависающих» задач ознакомления. Правильный выбор механизма позволит сделать систему более отзывчивой и удобной для конечных сотрудников.

← На главную