Уведомления в 1С:Предприятие — это мощный инструмент для автоматизации бизнес-процессов, который позволяет оперативно информировать пользователей о важных событиях: от просроченных платежей до изменений в документах. Без грамотной настройки оповещений даже самая продвинутая конфигурация теряет часть своей эффективности, так как сотрудники вынуждены вручную отслеживать критические моменты. В этой статье мы разберём все способы создания уведомлений — от простых всплывающих окон до сложных рассылок по email и SMS, с учётом особенностей разных версий платформы.
Особенность работы с уведомлениями в 1С заключается в том, что их реализация зависит от двух факторов: версии платформы (8.2 или 8.3) и конкретной конфигурации (Бухгалтерия, ЗУП, УТ и др.). Например, в 1С:Зарплата и Управление Персоналом уже есть встроенные механизмы для кадровых оповещений, тогда как в 1С:Управление Торговлей придётся настраивать триггеры самостоятельно. Мы рассмотрим универсальные методы, которые работают в большинстве случаев, а также укажем на нюансы для популярных конфигураций.
Важно понимать, что уведомления делятся на три типа по способу доставки: внутренние (всплывающие окна внутри программы), внешние (email, SMS, мессенджеры) и системные (логи в журнале регистрации). Каждый из них имеет свои плюсы и ограничения. Например, email-рассылки требуют настройки SMTP-сервера, а SMS-оповещения — подключения к шлюзу провайдера. В статье вы найдёте пошаговые инструкции для всех вариантов, включая примеры кода на встроенном языке 1С.
1. Внутренние уведомления: всплывающие окна и сообщения
Самый простой и быстрый способ оповестить пользователя — показать сообщение непосредственно в интерфейсе 1С. Для этого используется метод ПоказатьОповещениеПользователя() (в платформе 8.3) или Сообщить() (универсально для всех версий). Разберём оба варианта с примерами.
Метод Сообщить() выводит текст в нижней части экрана (в статусной строке) и подходит для некритичных уведомлений, которые не требуют немедленного реагирования. Например, так можно подтвердить успешное сохранение документа:
Сообщить("Документ 'Заказ покупателя №123' сохранён успешно!", СтатусСообщения.Информация);
Параметр СтатусСообщения позволяет задать тип сообщения: Информация, Внимание или Ошибка (отображается с соответствующей иконкой).
Для более заметных уведомлений, которые требуют подтверждения от пользователя, используется ПоказатьОповещениеПользователя(). Этот метод доступен только в 1С:Предприятие 8.3 и позволяет создавать всплывающие окна с кнопками. Пример кода для оповещения о просроченной задолженности:
ПоказатьОповещениеПользователя(
НСтр("ru = 'Внимание: просрочена оплата по счёту №%1 на сумму %2 руб.'"),
Новый Структура("НомерСчета, Сумма", "INV-456", 15000),
Новый ОповещениеПользователяПараметры(Истина, 10) // Истина - модальное окно, 10 - таймаут в секундах
);
Внимание: в версиях 8.3.20 и выше параметр таймаута игнорируется, если окно модальное (первый параметр = Истина).
- 📌 Преимущества: не требует внешних сервисов, работает офлайн, мгновенная доставка.
- ⚠️ Ограничения: пользователь должен быть в системе, чтобы увидеть уведомление; нет истории оповещений (если не ведётся отдельный журнал).
- 🔧 Где использовать: подтверждение действий, предупреждения о ошибках ввода, напоминания о незавершённых документах.
Чтобы уведомление не пропало слишком быстро, увеличьте таймаут или сделайте его модальным (первый параметр = Истина). Для критических сообщений комбинируйте всплывающее окно с записью в журнал регистрации.
2. Настройка уведомлений через механизм "Планы обмена"
Если вам нужно оповещать пользователей о изменениях в данных, которые поступают из других баз (например, в распределённой информационной системе), удобно использовать планы обмена. Этот механизм позволяет отслеживать изменения в объектах метаданных и отправлять уведомления при их появлении.
Для настройки выполните следующие шаги:
- Откройте конфигуратор и перейдите в ветку
Общие → Планы обмена. - Создайте новый план обмена (например,
"ОбменСЦентральнойБазой"). - В свойствах плана на вкладке
"Узлы"добавьте узлы, с которыми будет происходить обмен. - На вкладке
"Правила"укажите объекты, изменения в которых нужно отслеживать (например, документы"Заказ покупателя"). - В модуле плана обмена добавьте обработчик события
ПриЗаписи, где и будет формироваться уведомление.
Пример кода для обработчика, который отправляет email при изменении статуса заказа:
Процедура ПриЗаписи(Объект, ПараметрыЗаписи) Экспорт
Если Объект.ЭтоГруппа() Тогда
Возврат;
КонецЕсли;
Если Объект.Статус = Перечисление.СтатусыЗаказов.Отгружен Тогда
ТекстСообщения = СтрШаблон("Заказ %1 отгружен! Клиент: %2", Объект.Номер, Объект.Контрагент);
ОтправитьEmail("manager@company.ru", "Уведомление об отгрузке", ТекстСообщения);
КонецЕсли;
КонецПроцедуры
| Тип объекта | Событие для отслеживания | Пример уведомления |
|---|---|---|
| Документ "Заказ покупателя" | Изменение статуса на "Отгружен" | Email менеджеру с данными заказа |
| Справочник "Контрагенты" | Изменение реквизита "Блокировка" | Всплывающее окно для бухгалтера |
| Регистр сведений "Цены номенклатуры" | Добавление новой записи | SMS ответственному за ценообразование |
⚠️ Внимание: Если в вашей конфигурации уже настроен обмен данными через Универсальный формат обмена (например, для синхронизации с сайтом), добавление новых правил может конфликтовать с существующими. Перед внесением изменений проверьте текущие настройки в Администрирование → Обмен данными.
3. Email-рассылки: настройка SMTP и шаблонов писем
Для отправки уведомлений по электронной почте в 1С необходимо настроить SMTP-сервер и создать шаблоны писем. Этот метод подходит для оповещений, которые должны приходить пользователям даже когда они не работают в системе (например, напоминания о просроченных платежах).
Настройка SMTP выполняется в два этапа:
- Указание параметров сервера: перейдите в
Администрирование → Настройки программы → Почтаи заполните поля:- Адрес SMTP-сервера (например,
smtp.yandex.ru) - Порт (обычно
465для SSL или587для TLS) - Логин и пароль от почтового ящика
- Email отправителя (должен совпадать с логином)
- Адрес SMTP-сервера (например,
"Проверить соединение", чтобы убедиться, что параметры верны. Если тест не проходит, проверьте настройки брандмауэра и антивируса — они могут блокировать исходящие соединения на порты SMTP.Для создания шаблона письма используйте объект ПочтовоеСообщение. Пример кода для отправки уведомления о новой заявке:
Процедура ОтправитьEmail(АдресПолучателя, Тема, Текст)
Почта = Новый ПочтовоеСообщение;
Почта.Адресат = АдресПолучателя;
Почта.Тема = Тема;
Почта.Текст = Текст;
// Добавляем вложение (например, печатную форму документа)
Вложение = Новый ВложениеФайла("C:\Temp\Заявка.pdf");
Почта.Вложения.Добавить(Вложение);
Попытка
Почта.Отправить();
Сообщить("Письмо отправлено на " + АдресПолучателя, СтатусСообщения.Информация);
Исключение
Сообщить("Ошибка отправки: " + ОписаниеОшибки(), СтатусСообщения.Ошибка);
КонецПопытки;
КонецПроцедуры
Указать корректный SMTP-сервер и порт|Проверить логин/пароль от почтового ящика|Настроить SSL/TLS (если требуется)|Протестировать отправку на свой email|Добавить обработку исключений в код-->
⚠️ Внимание: Многие почтовые сервисы (например, Yandex или Mail.ru) блокируют отправку писем с "подозрительных" IP-адресов. Если письма не доходят, проверьте:
- Не попал ли ваш IP в чёрный список (используйте сервисы вроде MXToolbox).
- Не требует ли сервер подтверждения по SMS/коду (например, Gmail блокирует "небезопасные приложения").
- Не превышен ли лимит отправки писем (у бесплатных тарифов он обычно 500 писем/день).
4. SMS-оповещения: интеграция с шлюзами
Отправка SMS-уведомлений из 1С требует подключения к SMS-шлюзу — внешнему сервису, который выступает посредником между вашей базой и операторами связи. Популярные шлюзы для 1С: SMS.RU, SMSClub, IQSMS. Большинство из них предоставляют готовые обработки для интеграции.
Алгоритм настройки:
- Зарегистрируйтесь на сайте SMS-шлюза и пополните баланс.
- Скачайте обработку для 1С (обычно доступна в личном кабинете шлюза).
- Установите обработку в конфигуратор через
Файл → Открыть. - В модуле, где нужно отправлять SMS, добавьте вызов функции шлюза. Пример для SMS.RU:
Процедура ОтправитьSMS(НомерТелефона, Текст)SMS = Новый HTTPСоединение("api.sms.ru");
Запрос = Новый HTTPЗапрос("/sms/send");
Запрос.УстановитьТело(
"api_id=ВАШ_API_ID&to=" + НомерТелефона + "&text=" + Текст +
"&from=1CCompany" // Подпись отправителя (заранее согласуется с шлюзом)
);
Ответ = SMS.ОтправитьДляПолученияДанных(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
Сообщить("Ошибка отправки SMS: " + Ответ.ПолучитьТекст(), СтатусСообщения.Ошибка);
КонецЕсли;
КонецПроцедуры
Стоимость SMS зависит от тарифа шлюза и направления (внутри России или за рубеж). Средняя цена — 1.2–2.5 рубля за сообщение. Некоторые шлюзы предлагают пакеты со скидками (например, 10 000 SMS за 8 000 рублей).
Как проверить баланс на SMS-шлюзе?
Чтобы узнать остаток средств, отправьте GET-запрос на endpoint шлюза (обычно /balance?api_id=ВАШ_API_ID).
Пример для SMS.RU:
Соединение = Новый HTTPСоединение("api.sms.ru");
Ответ = Соединение.Получить("/balance?api_id=ВАШ_API_ID");
Сообщить("Баланс: " + Ответ.ПолучитьТекст());
Ответ придет в формате JSON, например: {"balance": 1500.50} (значение в рублях).
| Шлюз | Стоимость SMS (руб.) | Особенности |
|---|---|---|
| SMS.RU | 1.2–1.8 | Поддержка Viber, Telegram, голосовых сообщений |
| SMSClub | 1.3–2.0 | Готовые интеграции с 1С, бесплатный тестовый период |
| IQSMS | 1.5–2.5 | Высокая скорость доставки, поддержка 24/7 |
⚠️ Внимание: При отправке SMS на международные номера учитывайте:
- Стоимость может вырасти в 3–5 раз (например, до 10 рублей за SMS в Европу).
- Некоторые операторы блокируют сообщения от неизвестных отправителей (требуется регистрация алфавитного имени).
- Время доставки может достигать нескольких часов (в отличие от email, где задержки обычно минимальны).
5. Автоматические уведомления по расписанию
Если уведомления должны отправляться регулярно (например, ежедневные отчёты или еженедельные напоминания), удобно использовать регламентные задания. Этот механизм позволяет запускать процедуры по расписанию без участия пользователя.
Для создания регламентного задания:
- В конфигураторе перейдите в
Общие → Регламентные задания. - Создайте новое задание (например,
"ЕжедневнаяРассылкаНапоминаний"). - На вкладке
"Расписание"укажите частоту выполнения (ежедневно, еженедельно и т. д.) и время. - В модуле задания напишите код, который будет выполняться. Пример для отправки напоминаний о просроченных платежах:
Процедура Выполнить() ЭкспортЗапрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Клиент.Наименование КАК Клиент,
| Документ.Сумма КАК Сумма,
| Документ.СрокОплаты КАК СрокОплаты
|ИЗ
| Документ.СчётНаОплату КАК Документ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Клиент
| ПО Документ.Контрагент = Клиент.Ссылка
|ГДЕ
| Документ.СрокОплаты < &ТекущаяДата
| И Документ.Оплачен = ЛОЖЬ";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Текст = СтрШаблон("Уважаемый %1! Напоминаем о просроченном платеже на сумму %2 руб. (срок до %3).",
Выборка.Клиент, Выборка.Сумма, Формат(Выборка.СрокОплаты, "ДФ=dd.MM.yyyy"));
ОтправитьEmail(ПолучитьEmailКлиента(Выборка.Клиент), "Напоминание о платеже", Текст);
КонецЦикла;
КонецПроцедуры
Регламентные задания выполняются сервером 1С, поэтому для их работы необходимо:
- Использовать клиент-серверный вариант работы (не файловая база!).
- Убедиться, что сервер 1С:Предприятие запущен и не находится в "спящем" режиме.
- Настроить права доступа для пользователя, от имени которого выполняется задание.
Регламентные задания идеально подходят для массовых рассылок, но требуют мониторинга: если сервер 1С упадёт, задания не выполнятся. Настройте уведомления о сбоях в работе сервера (через журнал событий Windows или внешние системы мониторинга).
6. Уведомления в мобильном приложении 1С
Если ваша компания использует мобильное приложение 1С (например, 1С:Мобильная платформа или 1С:Предприятие для Android/iOS), можно настраивать push-уведомления. Этот метод актуален для удалённых сотрудников, которые работают со смартфонов или планшетов.
Для отправки push-уведомлений необходимо:
- Настроить сервис уведомлений в мобильной платформе. Это делается в конфигураторе через
Общие → Мобильное приложение → Настройки уведомлений. - Зарегистрировать приложение в Firebase Cloud Messaging (для Android) или Apple Push Notification Service (для iOS) и получить серверный ключ.
- В коде серверной части добавить вызов метода
ОтправитьPushУведомление(). Пример:Процедура ОтправитьPushУведомление(Пользователь, Заголовок, Текст)Уведомление = Новый МобильноеУведомление;
Уведомление.Пользователь = Пользователь;
Уведомление.Заголовок = Заголовок;
Уведомление.Текст = Текст;
Уведомление.Данные = Новый Структура("Тип,ДокументID", "Заявка", 12345); // Дополнительные данные
Попытка
Уведомление.Отправить();
Исключение
ЗаписатьЖурналРегистрации(НСтр("ru='Ошибка отправки push-уведомления'"), УровеньЖурналаРегистрации.Ошибка);
КонецПопытки;
КонецПроцедуры
⚠️ Внимание: Push-уведомления работают только если:
- Мобильное устройство подключено к интернету (через Wi-Fi или мобильную сеть).
- Приложение 1С установлено и не удалено пользователем.
- Пользователь не отключил уведомления для приложения в настройках телефона.
Для повышения надёжности комбинируйте push с другими каналами (например, дублируйте важные уведомления на email).
7. Журнал уведомлений: как вести историю оповещений
Чтобы отслеживать, какие уведомления были отправлены и кому, рекомендуется вести журнал уведомлений. Это можно сделать двумя способами:
- Через регистр сведений: создайте регистр с полями
"ДатаОтправки","Получатель","ТипУведомления","Статус"(отправлено/не отправлено). - Через журнал регистрации: используйте встроенный механизм 1С для записи событий с уровнем
ИнформацияилиПредупреждение.
Пример кода для записи в регистр сведений:
Процедура ЗаписатьВЖурналУведомлений(Получатель, Тип, Сообщение, Статус = Истина)
Запись = РегистрыСведений.ЖурналУведомлений.СоздатьЗапись();
Запись.ДатаОтправки = ТекущаяДата();
Запись.Получатель = Получатель;
Запись.ТипУведомления = Тип;
Запись.Сообщение = Сообщение;
Запись.Статус = Статус;
Запись.Записать();
КонецПроцедуры
Для анализа журнала удобно создать отчёт с фильтрами по дате, типу уведомления и статусу. Это поможет:
- Отслеживать, какие уведомления не были доставлены (например, из-за ошибок SMTP).
- Анализировать частоту оповещений для оптимизации бизнес-процессов.
- Подтверждать факт отправки уведомлений при спорных ситуациях (например, клиент утверждает, что не получал напоминание о платеже).
8. Типичные ошибки и их решение
При настройке уведомлений в 1С пользователи часто сталкиваются с типичными проблемами. Разберём самые распространённые из них и способы их решения.
| Ошибка | Возможная причина | Решение |
|---|---|---|
| Email не отправляется, нет ошибок | SMTP-сервер требует аутентификации или блокирует IP | Проверьте настройки брандмауэра, включите SSL/TLS, уточните параметры у хостинг-провайдера |
| Всплывающее окно не появляется | Код выполняется на сервере, а не на клиенте | Перенесите вызов ПоказатьОповещениеПользователя() в клиентский модуль |
| SMS не доходят получателю | Недостаточно средств на счёте шлюза или номер в чёрном списке | Проверьте баланс в личном кабинете шлюза, тестируйте на другом номере |
| Регламентное задание не выполняется | Ошибка в коде или недостаточно прав у пользователя | Проверьте журнал регистрации на сервере, запустите задание вручную для диагностики |
⚠️ Внимание: Если уведомления перестали работать после обновления 1С, проверьте:
- Не изменились ли имена методов в новой версии платформы (например, в 8.3.20 метод
ОтправитьПочту()был переименован вОтправить()). - Не сбросились ли настройки SMTP после обновления (иногда конфигуратор сбрасывает пароли).
- Не появились ли новые ограничения на отправку писем (например, в последних версиях 1С:Бухгалтерии добавлена проверка на спам).
Для диагностики сложных ошибок используйте журнал регистрации (Администрирование → Журнал регистрации). Фильтруйте записи по уровню Ошибка и ключевым словам ("почта", "SMS", "оповещение"). Если ошибка связана с внешним сервисом (SMTP или SMS-шлюз), запросите логи у технической поддержки провайдера.
90% проблем с уведомлениями в 1С связаны с тремя причинами: неверные настройки подключения (SMTP/SMS), ошибки в коде или недостаточные права пользователя. Всегда начинайте диагностику с проверки этих аспектов.
FAQ: Частые вопросы по уведомлениям в 1С
Можно ли отправлять уведомления в Telegram из 1С?
Да, для этого нужно использовать HTTP-запросы к API Telegram Bot. Сначала создайте бота через @BotFather, получите токен, затем отправляйте сообщения через метод sendMessage. Пример кода:
Процедура ОтправитьВTelegram(ЧатID, Текст, ТокенБота)
URL = "https://api.telegram.org/bot" + ТокенБота + "/sendMessage?chat_id=" + ЧатID + "&text=" + Текст;
HTTPСоединение = Новый HTTPСоединение(URL);
HTTPСоединение.Получить();
КонецПроцедуры
ЧатID можно узнать, отправив боту любое сообщение и просмотрев обновления через метод getUpdates.
Как сделать, чтобы уведомления приходили только ответственному сотруднику?
Для этого используйте роли и права доступа. В конфигураторе:
- Создайте новый
Реквизитв документе (например,"Ответственный"типаСправочникСсылка.Пользователи). - При отправке уведомления проверяйте этого пользователя:
Если Документ.Ответственный = ТекущийПользователь() ТогдаПоказатьОповещениеПользователя("Вам назначена новая задача!");
КонецЕсли;
Альтернативно можно использовать группы пользователей (например, "Менеджеры", "Бухгалтеры") и отправлять уведомления по группе.
Почему уведомления дублируются?
Дублирование обычно происходит из-за:
- Неправильной логики в коде (например, цикл отправляет сообщение несколько раз).
- Ошибок в регламентных заданиях (задание запускается повторно из-за сбоя).
- Проблем с транзакциями (е