К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как сделать уведомление в 1С: практическое руководство

Разбираем, как сделать уведомление в 1С: пользовательские оповещения, встроенные механизмы, код для разработчика, настройка напоминаний и частые ошибки.

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

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

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

Какие виды уведомлений есть в 1С и что выбрать

Платформа и типовые конфигурации предлагают несколько разных механизмов, и их часто путают. Оповещение пользователя — это всплывающее окно в правом нижнем углу клиентского приложения, которое появляется в результате действия или события. Напоминание — привязанная ко времени запись, которая срабатывает в заданный момент. Сообщение пользователю (СообщениеПользователю) — не всплывающее уведомление, а строка в панели сообщений, обычно для ошибок проверки заполнения.

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

Сравнение вариантов

ПоказатьОповещениеПользователя

Мгновенное всплывающее окно в сеансе пользователя. Подходит для подтверждения действий. Не работает, если пользователь не в программе.

Напоминания пользователя

Срабатывают по времени, доступны без программирования в типовых конфигурациях. Требуют включённой подсистемы напоминаний.

Отправка по электронной почте

Доставка вне 1С через регламентное задание или код. Нужна настройка учётной записи почты и прав доступа.

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

Уведомления и сообщения внутри базы между пользователями. Требует регистрации информационной базы в сервисе взаимодействия.

Как показать всплывающее оповещение программно

Основной инструмент разработчика — метод глобального контекста ПоказатьОповещениеПользователя(). Он вызывается на клиенте и принимает текст заголовка, навигационную ссылку, пояснение, картинку и статус оповещения. Типичный сценарий — сообщить пользователю, что документ проведён, или предложить перейти к созданному объекту.

&НаКлиенте

Процедура ПослеЗаписиДокумента()

СсылкаНаДокумент = ПолучитьНавигационнуюСсылку(Объект.Ссылка);

ПоказатьОповещениеПользователя(

"Документ создан",

СсылкаНаДокумент,

"Реализация № " + Объект.Номер + " успешно проведена",

БиблиотекаКартинок.Информация,

СтатусОповещенияПользователя.Информация);

КонецПроцедуры

Обратите внимание: метод работает только в клиентском контексте. Если вызвать его на сервере, получите ошибку. Поэтому логику обычно строят так: серверная процедура выполняет запись и возвращает данные, а клиентская — показывает оповещение по результату. Для асинхронных операций удобен обработчик ожидания или оповещение через Оповестить() с последующей обработкой в форме.

bsl
ПоказатьОповещениеПользователя("Готово", НавигационнаяСсылка, "Заказ проведён", БиблиотекаКартинок.Информация, СтатусОповещенияПользователя.Информация);

Как настроить напоминания без программирования

В типовых конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, Бухгалтерия, ЗУП) есть подсистема «Напоминания пользователя». Она позволяет любому пользователю создать напоминание к документу, контрагенту или произвольному событию без изменения конфигурации.

Порядок действий
  1. 1
    Откройте раздел «Администрирование» и убедитесь, что в настройках «Органайзер» включены напоминания
  2. 2
    Откройте объект (документ, элемент справочника) и выберите «Ещё» → «Напомнить» или команду «Напомнить» в панели
  3. 3
    Задайте текст напоминания и время срабатывания — конкретную дату или интервал (например, за день до срока)
  4. 4
    Сохраните и дождитесь срабатывания: напоминание появится в виде всплывающего окна и в списке текущих дел
  5. 5
    Проверьте список напоминаний через «Напоминания» в разделе органайзера — там должна быть созданная запись

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

Автоматические уведомления через регламентные задания

Когда уведомление должно отправляться по расписанию или по событию без участия пользователя, используют регламентные задания. Классическая схема: задание раз в час проверяет условие (например, приближение срока оплаты счёта) и отправляет письмо ответственному менеджеру.

Для отправки почты в типовых конфигурациях используется подсистема «Работа с почтовыми сообщениями»: администратор настраивает учётную запись в разделе «Администрирование» → «Органайзер» → «Электронная почта», а в коде вызывается РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(). В собственных конфигурациях можно работать с объектом ИнтернетПочта напрямую.

// Упрощённый пример в процедуре регламентного задания

Процедура ОтправитьНапоминанияОбОплате() Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Счет.Ссылка КАК Ссылка,

| Счет.Менеджер.АдресПочты КАК Адрес

|ИЗ

| Документ.СчетНаОплату КАК Счет

|ГДЕ

| Счет.СрокОплаты = &Завтра

| И НЕ Счет.Оплачен";

Запрос.УстановитьПараметр("Завтра", ТекущаяДатаСеанса() + 86400);

// далее — цикл по выборке с отправкой писем

КонецПроцедуры

Уведомления через систему взаимодействия и обсуждения

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

Программно уведомление создаётся объектом ОписаниеОповещенияСистемыВзаимодействия и отправляется методом менеджера системы взаимодействия. Это удобно для сценариев согласования: документ поступил на утверждение — ответственный получает уведомление с кнопкой перехода к документу, даже если у него закрыта нужная форма.

Проверка результата и типичные ошибки

После настройки любого уведомления проверьте полный цикл: событие → срабатывание → доставка → реакция получателя. Для всплывающих оповещений достаточно выполнить действие в интерфейсе. Для регламентных заданий откройте консоль заданий, запустите задание вручную и посмотрите журнал регистрации — ошибки отправки почты (неверный пароль, блокировка SMTP) видны именно там.

Контрольные точки

Как проверить результат

Всплывающее оповещение
Норма

Окно появляется в углу экрана, ссылка открывает нужный объект

Тревожный признак

Окна нет — проверьте, что метод вызван на клиенте, а не на сервере

Напоминание пользователя
Норма

Срабатывает в заданное время, видно в списке напоминаний

Тревожный признак

Не срабатывает — подсистема отключена или нет прав

Почтовая рассылка
Норма

Письмо приходит адресату, в журнале регистрации нет ошибок

Тревожный признак

Ошибки аутентификации SMTP или письма попадают в спам

Регламентное задание
Норма

Выполняется по расписанию, состояние «Выполнено»

Тревожный признак

Задание заблокировано или завершилось с ошибкой

Типичные ошибки
01
Вызов ПоказатьОповещениеПользователя на сервере — метод доступен только в клиентском контексте, код падает с ошибкой
02
Использование Сообщить() вместо оповещения — сообщение уходит в панель сообщений и пользователь его не замечает
03
Отправка писем в цикле без паузы и обработки ошибок — почтовый сервер блокирует учётную запись как спамера
04
Дублирование уведомлений: регламентное задание срабатывает чаще, чем меняется условие, и пользователь получает десятки одинаковых писем
05
Хранение пароля почты в коде — риск утечки; используйте учётные записи подсистемы почты или безопасное хранилище

Границы самостоятельной работы и когда нужен разработчик

Самостоятельно, без риска для данных, можно настраивать напоминания, обсуждения и учётные записи почты — это пользовательские механизмы, которые не меняют конфигурацию. Программные оповещения, регламентные задания и доработку типовых рассылок стоит поручать разработчику: ошибка в обработчике события может нарушить проведение документов, а неаккуратная рассылка — испортить отношения с контрагентами.

Если требуется интеграция с внешними мессенджерами (Telegram, корпоративные чаты), решение строится через HTTP-запросы к API бота. Такая доработка требует хранения токенов, обработки недоступности сервиса и логирования — это уже полноценная задача интеграции, а не настройка уведомления.

Итог

Что важно запомнить

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

Частые вопросы

Почему оповещение не появляется, хотя код выполняется без ошибок?

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

Можно ли отправить уведомление конкретному пользователю из кода?

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

Как сделать уведомление о новом заказе в мобильном приложении 1С?

Для мобильного клиента используются push-уведомления через систему взаимодействия: база регистрируется в сервисе, пользователи подключаются с мобильных устройств, а код отправляет оповещение менеджеру системы взаимодействия. Альтернатива — отправка письма или сообщения в мессенджер, который пользователь читает на телефоне.

Чем напоминание отличается от задачи в 1С?

Напоминание — простое уведомление в заданное время без механики выполнения. Задача (в конфигурациях с механизмом задач и бизнес-процессами) — полноценный объект с исполнителем, сроком и статусом, который контролирует завершение работы. Для контроля поручений используйте задачи, для личных «не забыть» — напоминания.

Как отключить лишние уведомления в типовой конфигурации?

Начните с настроек в разделе «Администрирование»: там отключаются напоминания, обсуждения и отдельные виды рассылок. Персональные напоминания пользователь удаляет сам в списке напоминаний. Если уведомления приходят от доработанного регламентного задания, его расписание меняет администратор в консоли заданий.