В работе с 1С:Предприятие часто возникает задача оповестить пользователей о важных событиях: завершении обработки, ошибках в документах, новых задачах или напоминаниях. Система предлагает несколько встроенных механизмов для отправки сообщений — от простых всплывающих окон до интеграции с внешними сервисами SMS и электронной почты. Выбор метода зависит от срочности уведомления, технических возможностей базы и предпочтений пользователей.
В этой статье мы разберём пять основных способов отправки сообщений в 1С 8.3 (актуально и для более ранних версий платформы), включая нюансы настройки каждого метода. Особое внимание уделим автоматизированным уведомлениям через регламентные задания — это позволит снизить нагрузку на администраторов и исключить человеческий фактор. Также рассмотрим типичные ошибки, которые приводят к тому, что сообщения не доходят до адресатов, и способы их устранения.
1. Всплывающие сообщения через «ПоказатьОповещениеПользователя»
Самый простой и быстрый способ уведомить пользователя — использовать встроенную функцию ПоказатьОповещениеПользователя(). Это метод класса УправляемоеПриложение, который отображает всплывающее окно в правом нижнем углу экрана. Сообщение исчезает автоматически через несколько секунд, но пользователь может закрыть его вручную.
Основные параметры функции:
- 📌 Текст — содержимое сообщения (до 255 символов).
- 🔗 Действие — ссылка на обработчик, который выполнится при клике на уведомление.
- 🕒 Задержка — время отображения в миллисекундах (по умолчанию 5000 мс).
- 🎨 ВнешнийВид — стиль оповещения (
ОповещениеПользователяВид.Важно,ОповещениеПользователяВид.Информацияи др.).
Пример кода для вывода предупреждения об ошибке:
УправляемоеПриложение.ПоказатьОповещениеПользователя(
"Ошибка при проведении документа! Проверьте реквизиты контрагента.",
Новый ОписаниеОповещения("ПерейтиКДокументу", ЭтотОбъект),
10000,
ОповещениеПользователяВид.Важно
);
⚠️ Внимание: В тонком клиенте и веб-клиенте функция работает только при активном сеансе пользователя. Если пользователь закрыл 1С, уведомление не будет доставлено. Для гарантированной доставки используйте альтернативные методы (почта, SMS).
Чтобы уведомление не пропадало слишком быстро, увеличьте параметр задержки до 15000–20000 мс. Это особенно полезно для длинных сообщений, которые пользователю нужно прочитать внимательно.
2. Отправка сообщений через электронную почту
Если пользователь не находится в системе, лучший способ оповещения — электронная почта. В 1С есть встроенный механизм отправки писем через SMTP, который поддерживает HTML-разметку, вложения и групповую рассылку. Для работы требуется предварительная настройка параметров почтового сервера в справочнике ПочтовыеПрофили.
Алгоритм отправки письма:
- Создать объект
Почтаи указать профиль. - Заполнить поля
Адресат,Тема,Текст. - При необходимости добавить вложения (файлы, отчёты в формате PDF/Excel).
- Отправить письмо методом
Отправить().
Пример кода для отправки отчёта по email:
Почта = Новый Почта;
Почта.Профиль = ПочтовыеПрофили.Основной;
Письмо = Почта.СоздатьПисьмо();
Письмо.Адресат = "user@example.com";
Письмо.Тема = "Отчёт по продажам за " + ТекущаяДата();
Письмо.Текст = "Во вложении отчёт в формате Excel. Проверьте данные!";
Письмо.Вложения.Добавить("C:\Reports\Sales_" + Формат(ТекущаяДата(), "ДЛФ=DT") + ".xlsx");
Почта.Отправить(Письмо);
| Параметр почтового профиля | Рекомендуемое значение | Примечание |
|---|---|---|
| SMTP-сервер | smtp.example.com |
Укажите адрес сервера вашего почтового провайдера (например, smtp.yandex.ru для Яндекс.Почты). |
| Порт | 465 (SSL) или 587 (TLS) |
Порт зависит от протокола шифрования. Для Gmail используйте 465. |
| Аутентификация | Да | Включите, если сервер требует логин/пароль. |
| Имя отправителя | 1С: Уведомления <noreply@company.ru> |
Лучше использовать корпоративный email, чтобы письма не попадали в спам. |
⚠️ Внимание: Если письма не отправляются, проверьте:
- 🔌 Настройки брандмауэра (порты 25, 465, 587 должны быть открыты).
- 🔐 Правильность логина/пароля в почтовом профиле.
- 📤 Ограничения почтового сервера на количество писем в час (например, Яндекс блокирует рассылки более 100 писем/день для бесплатных аккаунтов).
3. SMS-уведомления через внешние сервисы
Для срочных оповещений (например, о просроченных платежах или новых заказах) подходят SMS-сообщения. В 1С нет встроенного SMS-шлюза, но можно интегрироваться с внешними сервисами через HTTP-запросы. Популярные провайдеры: SMS.ru, SMSAero, TurboSMS. Большинство из них предоставляют API с документацией для 1С.
Общий алгоритм отправки SMS:
- Зарегистрироваться на сайте SMS-провайдера и получить API-ключ.
- Сформировать URL-запрос с параметрами (номер телефона, текст сообщения, ключ).
- Отправить запрос через
HTTPСоединениеилиHTTPЗапрос. - Обработать ответ сервера (успех/ошибка).
Пример кода для отправки SMS через SMS.ru:
Адрес = "https://sms.ru/sms/send";
Запрос = Новый HTTPЗапрос(Адрес);
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
ТелоЗапроса = "api_id=ВАШ_API_КЛЮЧ&to=79123456789&text=" + URLКодировать("Ваш заказ №123 отправлен! Сумма: 5000 руб.");
Ответ = Новый HTTPСоединение(Адрес);
Ответ.ОтправитьДляОбработки(Запрос, ТелоЗапроса);
Результат = Ответ.ПолучитьТекст();
Если НЕ ЗначениеЗаполнено(Результат) Или НЕ Найти(Результат, """status"":""OK""") Тогда
Сообщить("Ошибка отправки SMS: " + Результат);
КонецЕсли;
Преимущества SMS-уведомлений:
- 📱 Мгновенная доставка (90% сообщений читаются в течение 3 минут).
- 🔄 Нет зависимости от активности пользователя в 1С.
- 📊 Возможность отслеживать статус доставки (большинство провайдеров предоставляют логи).
⚠️ Внимание: Стоимость SMS варьируется от 0.5 до 3 рублей за сообщение в зависимости от провайдера и объёма. Уточняйте тарифы на сайте сервиса — некоторые взимают плату даже за не доставленные сообщения (например, при неверном номере телефона).
Как проверить баланс на SMS.ru?
Отправьте GET-запрос на адрес https://sms.ru/my/balance?api_id=ВАШ_API_КЛЮЧ. В ответе будет JSON с текущим балансом в формате {"balance": 123.45}.
4. Системные уведомления через «Журнал регистрации»
Для внутреннего аудита и оповещения администраторов удобно использовать журнал регистрации. Это встроенный инструмент 1С, который фиксирует все события системы (ошибки, предупреждения, информационные сообщения). Уведомления можно настроить так, чтобы они отображались в отдельном окне или отправлялись на email.
Как добавить запись в журнал регистрации:
ЗаписьЖурналаРегистрации(
УровеньЖурналаРегистрации.Ошибка, // или Предупреждение, Информация
"ОбработкаДокументов",
,
"Не удалось провести документ РеализацияТоваровУслуг №000123 от 01.06.2026. Причина: Не хватает товара на складе.",
Истина // Показать пользователю
);
Особенности метода:
- 📝 Все записи хранятся в базе данных и доступны для анализа через
Администрирование → Журнал регистрации. - 🔔 Можно настроить автоматическую рассылку критических ошибок на email (в параметрах журнала).
- 🔍 Поддерживает фильтрацию по дате, уровню важности и источнику события.
Чтобы включить оповещения по email:
- Откройте
Администрирование → Настройка программы → Журналы регистрации. - Выберите нужный журнал и нажмите «Настроить оповещения».
- Укажите email администратора и минимальный уровень важности (например, «Ошибка»).
Включить ведение журнала|Указать email для оповещений|Выбрать уровень важности (Ошибка/Предупреждение)|Проверить права доступа к журналу-->
5. Автоматизированные уведомления через регламентные задания
Для регулярных оповещений (например, ежедневных отчётов или напоминаний о просроченных заданиях) оптимально использовать регламентные задания. Это фоновые процессы, которые выполняются по расписанию без участия пользователя. Они позволяют отправлять уведомления в заданное время, даже если никто не работает в базе.
Алгоритм создания регламентного задания для рассылки:
- Создать обработку с логикой формирования и отправки уведомлений (например, проверка просроченных документов).
- Зарегистрировать задание в справочнике
РегламентныеЗадания. - Настроить расписание (ежедневно, еженедельно, в определённое время).
- Указать параметры выполнения (пользователь от имени которого запускается, приоритет).
Пример кода для регламентного задания (отправка email с просроченными заказами):
Процедура ВыполнитьРассылку() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказыКлиентов.Ссылка КАК Ссылка,
| ЗаказыКлиентов.Номер КАК Номер,
| ЗаказыКлиентов.Дата КАК Дата
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказыКлиентов
|ГДЕ
| ЗаказыКлиентов.Статус = &Статус
| И ЗаказыКлиентов.Дата < TEкущаяДата()";
Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыЗаказовКлиентов.НеВыполнен);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
ТекстПисьма = "Список просроченных заказов:" + Символы.ПС;
Пока Результат.Следующий() Цикл
ТекстПисьма = ТекстПисьма + Символы.ПС +
"Заказ №" + Результат.Номер + " от " + Формат(Результат.Дата, "ДЛФ=D") +
" (ссылка: " + Результат.Ссылка + ")";
КонецЦикла;
ОтправитьПисьмо("admin@company.ru", "Просроченные заказы на " + ТекущаяДата(), ТекстПисьма);
КонецПроцедуры
Преимущества регламентных заданий:
- ⏰ Автоматическое выполнение без участия пользователя.
- 📅 Гибкое расписание (можно настроить даже на конкретные минуты).
- 🔄 Поддерживает повторное выполнение при сбоях.
⚠️ Внимание: Регламентные задания потребляют ресурсы сервера. Не создавайте слишком частые задачи (например, каждую минуту) — это может привести к замедлению работы базы. Оптимальная частота для рассылок: 1 раз в час или реже.
Регламентные задания идеальны для регулярных отчётов, но требуют тестирования в нерабочее время, чтобы избежать нагрузки на сервер в пиковые часы.
6. Интеграция с мессенджерами (Telegram, Viber)
Современный подход к оповещениям — отправка сообщений в Telegram, Viber или другие мессенджеры. Это удобно для пользователей, которые постоянно проверяют мобильные уведомления. Для интеграции используются боты (в Telegram) или API мессенджеров.
Пример отправки сообщения в Telegram:
- Создайте бота через @BotFather в Telegram и получите токен.
- Узнайте
chat_idпользователя (можно отправить сообщение боту и просмотреть логи). - Отправьте POST-запрос на API Telegram.
Код для отправки уведомления:
Адрес = "https://api.telegram.org/botВАШ_ТОКЕН/sendMessage";
Запрос = Новый HTTPЗапрос(Адрес);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
ТелоЗапроса = JSON.Записать(Новый Структура("chat_id, text", 123456789, "⚠️ Внимание! В документе №456 обнаружены ошибки. Требуется проверка!"));
Ответ = Новый HTTPСоединение(Адрес);
Ответ.ОтправитьДляОбработки(Запрос, ТелоЗапроса);
Результат = Ответ.ПолучитьТекст();
Если НЕ ЗначениеЗаполнено(Результат) Тогда
Сообщить("Ошибка отправки в Telegram!");
КонецЕсли;
Преимущества мессенджеров:
- 📱 Мгновенные push-уведомления на смартфон.
- 🤖 Поддержка интерактивных кнопок (в Telegram).
- 📸 Возможность отправлять файлы (скриншоты, PDF).
⚠️ Внимание: Telegram и Viber могут блокировать ботов, которые отправляют слишком много сообщений за короткий промежуток времени. Ограничьте частоту рассылок до 1 сообщения в минуту для одного чата.
FAQ: Частые вопросы по отправке сообщений в 1С
Как проверить, дошло ли уведомление до пользователя?
Для всплывающих сообщений (ПоказатьОповещениеПользователя) проверки нет — они отображаются только при активном сеансе. Для email и SMS используйте:
- 📧 Для почты: проверьте папку «Отправленные» в почтовом клиенте или логи SMTP-сервера.
- 📱 Для SMS: большинство провайдеров возвращают
message_idв ответе API. По нему можно запросить статус доставки.
Можно ли отправить сообщение пользователю, который не в сети?
Да, но только через внешние каналы:
- 📧 Email — доставится при следующем подключении пользователя к интернету.
- 📱 SMS/мессенджеры — доставятся на устройство независимо от активности в 1С.
- 📝 Журнал регистрации — пользователь увидит уведомление при следующем входе в систему.
Всплывающие сообщения (ПоказатьОповещениеПользователя) работают только при активном сеансе.
Как отправить сообщение нескольким пользователям одновременно?
Используйте циклы или групповую рассылку:
- Для email: добавьте несколько адресатов в поле
Адресатчерез запятую или используйте массив. - Для SMS: большинство провайдеров поддерживают параметр
toс несколькими номерами (разделены запятыми). - Для всплывающих уведомлений: создайте обработку, которая перебирает список пользователей и вызывает
ПоказатьОповещениеПользователядля каждого.
Пример групповой рассылки по email:
Адресаты = Новый Массив;
Адресаты.Добавить("user1@example.com");
Адресаты.Добавить("user2@example.com");
Письмо.Адресат = СтрСоединить(Адресаты, ";");
Почему не отправляются письма из 1С?
Частые причины и решения:
- 🔌 Блокировка портов: Убедитесь, что порты 25, 465 или 587 открыты на сервере 1С и в брандмауэре.
- 🔐 Неверные учётные данные: Проверьте логин/пароль в почтовом профиле. Некоторые серверы (например, Gmail) требуют специальных паролей для приложений.
- 📤 Ограничения провайдера: Бесплатные почтовые сервисы (Yandex, Mail.ru) могут блокировать рассылки с серверов. Используйте корпоративную почту.
- 📧 Попадание в спам: Укажите корректное имя отправителя и избегайте слов «срочно», «важно» в теме письма.
Для диагностики включите логирование ошибок в почтовом профиле:
Почта.ВключитьПротокол = Истина;
Почта.Отправить(Письмо);
Протокол = Почта.ПолучитьПротокол(); // Здесь будет подробный лог ошибок
Как отключить уведомления для конкретного пользователя?
Способы в зависимости от типа уведомления:
- 🔔 Всплывающие сообщения: В коде добавьте проверку:
Если НЕ Пользователь.ЭтоГруппа("Администраторы") ТогдаУправляемоеПриложение.ПоказатьОповещениеПользователя(Текст);
КонецЕсли;
- 📧 Email/SMS: Исключите адрес пользователя из списка рассылки в обработке.
- 📝 Журнал регистрации: Настройте фильтры в параметрах оповещений (исключите пользователя по логину).