Как реализовать уведомления и напоминания пользователям в 1С:Бухгалтерия 3.0 при проведении документа?

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

При автоматизации бизнес-процессов в 1С:Бухгалтерия 3.0 часто возникает необходимость оповестить одного или нескольких сотрудников о проведении определенного документа. Рассмотрим подробно, с какими архитектурными и техническими ограничениями сталкивается разработчик при решении этой задачи и какие существуют механизмы для отправки уведомлений.

Ограничения платформы при вызове уведомлений из проведения

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

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

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

В типовой 1С:Бухгалтерия (начиная с версии 3.0.81) разработчиками 1С официально включена подсистема «Напоминания» из Библиотеки Стандартных Подсистем (БСП). Для активизации механизма перейдем в раздел Администранция — Органайзер и установим флаг Напоминания.

После включения функционала мы можем программно создавать записи в регистре сведений НапоминанияПользователя. Платформа самостоятельно отслеживает наступление срока и выводит всплывающее окно нужным пользователям в указанное время.

Разберем пример программного формирования напоминания:


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

Способ 2. Использование регистра «Задачи бухгалтера»

Посмотрим на вариант интеграции со встроенным в конфигурацию механизмом задач. В 1С:Бухгалтерия 3.0 присутствует общая форма СписокЗадач и регистр сведений ЗадачиБухгалтера. Формируя записи в данном регистре, можно выводить нужные события в списке задач конкретных пользователей.

Для реализации этого подхода запишем необходимые данные в регистр сведений ЗадачиБухгалтера при проведении документа на сервере или в обработчике клиентской формы ПослеЗаписи.

Способ 3. Система взаимодействия (Обсуждения)

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

Выясним, как программно отправить сообщение в обсуждение:


Обсуждение = СистемыВзаимодействия.СоздатьОбсуждение();
Обсуждение.Участники.Добавить(ИдентификаторПользователя);

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

Способ 4. Реализация через расширение конфигурации и регламентные задания

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

  1. В расширении конфигурации создаем регистр сведений для хранения очереди уведомлений (поля: пользователь, ссылка на документ, статус отправки).
  2. При проведении документа добавляем запись в созданный регистр сведений.
  3. Создаем регламентное задание, которое по заданному расписанию опрашивает регистр и выполняет рассылку адресатам любым удобным способом (по электронной почте через встроенные модули БСП или в сторонние мессенджеры с помощью объектов HTTPСоединение и HTTPЗапрос).

Выполнение отправки писем или внешних HTTP-запросов через фоновые и регламентные задания позволяет избежать зависания интерфейса и замедления транзакции проведения документа.

← На главную