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

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

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

Как сделать оповещения в 1С: показать оповещение пользователя, напоминания, регламентные задания и отправка на email. Пошаговые инструкции и примеры кода.

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

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

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

Какое оповещение вам нужно: выбор механизма

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

Сравнение способов оповещений

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

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

Напоминания пользователя (БСП)

Штатная подсистема типовых конфигураций. Пользователь сам создаёт напоминание на дату и время. Не требует доработок.

Регламентное задание + email

Фоновая проверка условий по расписанию и отправка писем. Подходит для контроля сроков и задолженностей. Требует настройки почтового профиля.

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

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

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

Всплывающее оповещение через ПоказатьОповещениеПользователя()

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

Типовой сценарий — оповестить пользователя после успешной записи документа с нестандартными условиями. Пример: при проведении заказа с суммой выше лимита показать предупреждение менеджеру.

bsl
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

    Если Объект.СуммаДокумента > 100000 Тогда
        ПоказатьОповещениеПользователя(
            "Превышен лимит",
            ,
            "Сумма заказа превышает 100 000. Требуется согласование.",
            БиблиотекаКартинок.Информация,
            СтатусОповещенияПользователя.Важное);
    КонецЕсли;

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

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

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

Оповещение с ожиданием ответа: ОписаниеОповещения

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

bsl
&НаКлиенте
Процедура ОтправитьНаСогласование(Команда)

    Оповещение = Новый ОписаниеОповещения("ПослеВопросаОСогласовании", ЭтотОбъект);
    ПоказатьВопрос(Оповещение,
        "Отправить документ на согласование руководителю?",
        РежимДиалогаВопрос.ДаНет,
        20,
        КодВозвратаДиалога.Нет);

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

&НаКлиенте
Процедура ПослеВопросаОСогласовании(Результат, ДопПараметры) Экспорт

    Если Результат = КодВозвратаДиалога.Да Тогда
        ОтправитьНаСогласованиеНаСервере();
        ПоказатьОповещениеПользователя("Документ отправлен на согласование");
    КонецЕсли;

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

Ключевой момент: процедура-обработчик должна быть экспортной (слово Экспорт) и находиться в клиентском контексте. Если забыть Экспорт, платформа выдаст ошибку «Процедура не обнаружена» в момент ответа пользователя.

Напоминания пользователя без доработки конфигурации

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

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

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

Программно напоминание тоже можно создать — через регистр сведений подсистемы БСП, но прямая запись в регистр обходом API подсистемы рискованна: состав полей меняется между версиями БСП. Если нужна массовая генерация напоминаний, используйте программный интерфейс модуля НапоминанияПользователя своей версии библиотеки.

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

Когда нужно оповещать о событиях, которые не связаны с действиями пользователей — просроченные счета, заканчивающиеся договоры, незакрытые заказы — применяется связка «регламентное задание + проверка условий + отправка письма». Это самый гибкий, но и самый трудоёмкий способ.

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

bsl
Процедура ПроверитьПросроченныеСчета() Экспорт

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Счет.Ссылка КАК Ссылка,
    |   Счет.Ответственный КАК Ответственный
    |ИЗ
    |   Документ.СчетНаОплату КАК Счет
    |ГДЕ
    |   Счет.ДатаОплаты < &ТекущаяДата
    |   И НЕ Счет.Оплачен";
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ОтправитьПисьмоОтветственному(Выборка.Ответственный, Выборка.Ссылка);
    КонецЦикла;

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

Для отправки почты используется объект ИнтернетПочта с профилем ИнтернетПочтовыйПрофиль, где указываются SMTP-сервер, порт, учётная запись и параметры шифрования. В типовых конфигурациях проще: заведите учётную запись электронной почты в настройках, и системная учётная запись будет доступна программно через РаботаСПочтовымиСообщениями.

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

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

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

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

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

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

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

Окна нет — проверьте, что код выполняется на клиенте, а условие вообще срабатывает

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

В журнале регистрации есть записи об успешном выполнении задания по расписанию

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

Задание не запускается или завершается ошибкой — смотрите текст ошибки в журнале регистрации

Отправка email
Норма

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

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

Ошибка аутентификации или таймаут — проверьте пароль приложения, порт и разрешения почтового сервиса

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

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

Альтернативы: обсуждения, мессенджеры и внешние сервисы

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

Для уведомлений в Telegram, Slack или корпоративный мессенджер используются HTTP-запросы к API бота через объект HTTPСоединение. Это рабочий вариант, когда сотрудники не держат 1С постоянно открытой. Учитывайте, что токен бота — это секрет: храните его в защищённом хранилище, а не в открытом виде в коде общего модуля.

Итог

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

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

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

Можно ли отправить оповещение другому пользователю 1С?

Метод ПоказатьОповещениеПользователя() работает только в текущем сеансе. Чтобы уведомить другого сотрудника, используйте систему взаимодействия (сообщение в обсуждении), отправку email или напоминание, созданное программно с указанием пользователя-получателя в подсистеме БСП.

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

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

Как сделать, чтобы оповещение не исчезало само?

Стандартное окно оповещения исчезает автоматически, и это поведение не настраивается. Если сообщение критично и требует обязательного прочтения, используйте ПоказатьВопрос() с описанием оповещения — диалог останется на экране, пока пользователь не ответит.

Можно ли настроить оповещения без программирования?

Да. В типовых конфигурациях доступны напоминания пользователя, а в некоторых — механизм «Бизнес-процессы и задачи», где задачи назначаются сотрудникам с уведомлением. Также часть рассылок настраивается через отчёты с рассылкой по расписанию без единой строки кода.

Как отправить оповещение на email, если почтовый сервис требует двухфакторную аутентификацию?

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

Оповещения приходят с опозданием — в чём причина?

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