В любой компании, использующей 1С:Предприятие, рано или поздно возникает задача оповестить сотрудников о важных событиях: изменении графиков, новых задачах, ошибках в документах или плановых работах. Но как правильно организовать отправку сообщений, чтобы они дошли до адресатов, не потерялись в потоке уведомлений и не нарушили права доступа?
Эта статья покрывает все актуальные способы отправки сообщений в 1С 8.3 — от встроенных механизмов платформы до кастомизированных решений с использованием кода. Мы разберём:
- 📢 Системные уведомления — как настроить автоматические оповещения о событиях в базе
- 👥 Персональные сообщения — отправка конкретным пользователям или группам
- 📧 Email-рассылки — интеграция с почтовыми клиентами напрямую из 1С
- 🤖 Автоматизация через регламентные задания — как запланировать отправку на будущее
- 🛠️ Кастомизация через код — примеры скриптов для гибких сценариев
Особое внимание уделим правам доступа — без правильной настройки роли пользователи просто не увидят ваши сообщения, даже если они технически отправлены. А в конце статьи вы найдёте FAQ с ответами на типичные ошибки и нюансы работы с разными версиями платформы.
1. Системные уведомления 1С: как работают встроенные механизмы
Платформа 1С:Предприятие 8.3 имеет встроенный механизм уведомлений, который срабатывает при определённых событиях: создание документа, изменение статуса, ошибки обработки и т.д. Эти сообщения появляются в правом нижнем углу интерфейса пользователя и не требуют дополнительной настройки почты или внешних сервисов.
Чтобы включить системные уведомления:
- Откройте
Администрирование → Настройки пользователей и прав → Уведомления. - Установите флажки для событий, о которых нужно оповещать (например,
Новый документ "Заявка на отпуск"). - Нажмите
Сохранить и закрыть.
Важно: системные уведомления видны только тем пользователям, у которых есть права на просмотр объекта, вызвавшего событие. Например, если менеджер создаёт заказ, а бухгалтер не имеет доступа к разделу "Продажи", он не увидит оповещение о новом заказе.
Чтобы проверить, доходят ли уведомления до пользователя, временно назначьте ему роль "Администратор" и выполните тестовое действие (например, создайте тестовый документ).
| Тип события | Пример уведомления | Кому отправляется |
|---|---|---|
| Создание документа | "Создан новый заказ №123 от клиента ООО 'Ромашка'" | Пользователи с правом просмотра заказов |
| Изменение статуса | "Заявка на отпуск Иванова И.И. одобрена" | Автор заявки и утверждающие лица |
| Ошибка обработки | "Не удалось провести документ 'Поступление товаров №456': недостаточно места на складе" | Пользователь, инициировавший действие |
⚠️ Внимание: В 1С:Управление торговлей 11 и 1С:ERP 2 логика уведомлений может отличаться от стандартной конфигурации. Например, в ERP уведомления о задачах привязаны к модулю "Управление взаимоотношениями с клиентами" (CRM) и требуют отдельной настройки.
2. Персональные сообщения: как отправить конкретному пользователю
Если нужно отправить сообщение одному или нескольким конкретным пользователям (например, напоминание о дедлайне или просьбу проверить данные), используйте механизм Пользовательские сообщения. Он доступен в большинстве типовых конфигураций, включая 1С:Бухгалтерию 3.0 и 1С:Зарплата и управление персоналом 3.1.
Инструкция по отправке:
- Перейдите в
Администрирование → Обмен данными и отчёты → Пользовательские сообщения. - Нажмите
Создатьи выберите получателя из справочника пользователей. - В поле
Текст сообщениявведите текст (можно использовать HTML-разметку для форматирования). - Укажите срок действия сообщения (по умолчанию — 7 дней).
- Сохраните и отправьте.
Пользователь увидит сообщение при следующем входе в систему в виде всплывающего окна. Если он проигнорирует его, уведомление останется в списке непрочитанных (доступно через иконку конверта в правом верхнем углу интерфейса).
Пользователь активен в справочнике|У пользователя есть роль для просмотра сообщений|Текст не содержит конфиденциальных данных|Указан корректный срок действия-->
3. Email-рассылки из 1С: настройка и отправка
Для оповещений, которые должны дойти до пользователя вне 1С (например, на корпоративную или личную почту), используйте встроенный механизм email-рассылок. Это актуально для:
- 📩 Отправки отчётов по расписанию (например, ежедневная выручка)
- 🔔 Уведомлений о критичных событиях (ошибки интеграции, превышение лимитов)
- 📅 Напоминаний о мероприятиях (совещания, обучение)
Чтобы настроить отправку email:
- Перейдите в
Администрирование → Организации и настройки → Настройки почты. - Добавьте почтовый профиль (укажите SMTP-сервер, порт, логин/пароль). Для Yandex или Mail.ru может потребоваться включить разрешение для "ненадёжных приложений".
- В модуле, где нужно отправить письмо, используйте код:
Почта = Новый Почта;Почта.АдресОтправителя = "noreply@вашакомпания.ru";
Почта.ТекстПисьма = "Уважаемый пользователь, ...";
Почта.Отправить("user@example.com", "Тема письма");
Для массовых рассылок (например, всем менеджерам отдела) удобно использовать групповые обработки. В типовых конфигурациях есть готовые отчёты, например, Рассылка писем контрагентам в 1С:УТ 11.
⚠️ Внимание: При отправке писем с вложениями (например, PDF-отчётов) проверьте ограничения вашего SMTP-сервера. Некоторые провайдеры блокируют письма размером более 10 МБ или с определёнными типами файлов (например, .exe).
4. Регламентные задания: автоматизация отправки сообщений
Если сообщения нужно отправлять регулярно (например, каждый понедельник в 9:00 или в последний день месяца), используйте Регламентные задания. Этот механизм позволяет запланировать выполнение кода по расписанию без участия пользователя.
Пример настройки регламентного задания для отправки напоминания о дедлайне:
- Откройте
Администрирование → Поддержка и обслуживание → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - В поле
Расписаниеукажите частоту (например,Ежедневно в 14:00). - В поле
Кодвставьте скрипт:// Получаем список пользователей, которым нужно отправить напоминаниеЗапрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Пользователи.Ссылка КАК Пользователь
ИЗ Справочник.Пользователи КАК Пользователи
ГДЕ Пользователи.Подразделение = &Подразделение";
Запрос.УстановитьПараметр("Подразделение", Справочники.Подразделения.НайтиПоНаименованию("Отдел продаж"));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Пользователь = Выборка.Пользователь;
Сообщение.Текст = "Напоминаем, что сегодня последний день для сдачи отчётов по продажам!";
Сообщение.Отправить();
КонецЦикла;
- Сохраните и запустите задание.
Регламентные задания выполняются на сервере 1С, поэтому пользователям не нужно быть онлайн. Однако для работы механизма требуется, чтобы агент сервера 1С был запущен (в кластерных установках — на рабочем сервере).
Что делать, если регламентное задание не срабатывает?
Проверьте:
1. Статус агента сервера 1С (должен быть "Активен").
2. Права пользователя, от имени которого выполняется задание (должны включать роль "Администрирование").
3. Логи сервера на наличие ошибок (через Администрирование → Журнал регистрации).
4. Настройки расписания — возможно, указано неверное время или временная зона.
5. Продвинутые сценарии: отправка сообщений через код
Для нестандартных задач (например, отправка сообщений при выполнении определённых условий или интеграция с внешними системами) потребуется написать собственный код. Рассмотрим несколько практических примеров.
Пример 1: Оповещение при превышении кредитного лимита
Допустим, нужно уведомлять менеджера, если клиент превысил кредитный лимит. Код для обработчика события ПередЗаписью в документе "Реализация товаров":
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Если Клиент.КредитныйЛимит < СуммаДокумента Тогда
ТекстСообщения = СтрШаблон("Клиент %1 превысил кредитный лимит на %2 руб.",
Клиент.Наименование,
СуммаДокумента - Клиент.КредитныйЛимит);
Сообщение = Новый СообщениеПользователю;
Сообщение.Пользователь = Пользователи.НайтиПоИмени("Иванов"); // Менеджер
Сообщение.Текст = ТекстСообщения;
Сообщение.Отправить();
// Альтернативно: отправить email
Почта = Новый Почта;
Почта.Отправить("ivanov@company.ru", "Превышение кредитного лимита", ТекстСообщения);
КонецЕсли;
КонецПроцедуры
Пример 2: Массовая рассылка по условию
Чтобы отправить сообщение всем пользователям, у которых есть непроводённые документы:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Документы.Автор КАК Пользователь
ИЗ Документ.РеализацияТоваровУслуг КАК Документы
ГДЕ Документы.Проводён = ЛОЖЬ
И Документы.Дата >= НачалоДня(ТекущаяДата())";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Пользователь = Выборка.Пользователь.ПолучитьОбъект();
Сообщение = Новый СообщениеПользователю;
Сообщение.Пользователь = Пользователь;
Сообщение.Текст = "У вас есть непроводённые документы за сегодня! Проверьте раздел 'Продажи'.";
Сообщение.Отправить();
КонецЦикла;
Для работы с кодом потребуются права на изменение конфигурации или использование внешних обработок. Если вы не уверены в своих навыках программирования, тестируйте скрипты на копии базы.
1. Права доступа (используйте ПроверкаПравДоступа()).
2. Обработку ошибок (оборачивайте отправку в Попытка...Исключение).
3. Логирование (записывайте события в ЖурналРегистрации для отладки).-->
6. Интеграция с внешними системами: Telegram, Slack, SMS
Если ваша команда активно использует Telegram, Slack или другие мессенджеры, можно настроить отправку уведомлений напрямую в чаты. Для этого потребуется:
- Создать бота в мессенджере (например, через @BotFather в Telegram).
- Получить
API-токениID чата. - Использовать HTTP-запросы из 1С для отправки сообщений.
Пример кода для отправки сообщения в Telegram:
Функция ОтправитьВTelegram(Текст, Токен, ChatID)
URL = "https://api.telegram.org/bot" + Токен + "/sendMessage?chat_id=" + ChatID + "&text=" + Текст;
HTTPСоединение = Новый HTTPСоединение(URL);
HTTPЗапрос = Новый HTTPЗапрос();
Ответ = HTTPСоединение.Получить(HTTPЗапрос);
Возврат Ответ.КодСостояния = 200;
КонецФункции
// Использование:
Токен = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"; // Замените на свой токен
ChatID = "-100123456789"; // ID группы или чата
ОтправитьВTelegram("Внимание! В базе 1С обнаружены ошибки проводки.", Токен, ChatID);
Аналогично можно интегрироваться с Slack (через Incoming Webhooks) или SMS-шлюзами (например, SMS.RU, TurboSMS). Главное — убедиться, что:
- 🔒 Токены и ключи API хранятся в
КонстантахилиСправочниках, а не в коде. - 📡 Есть резервный канал оповещений (например, если Telegram заблокирован, отправляйте SMS).
- 📝 Ведётся журнал отправленных сообщений для отчётности.
⚠️ Внимание: При использовании внешних API учитывайте ограничения на количество запросов (например, в бесплатном тарифе Telegram бот может отправлять не более 30 сообщений в секунду). Для массовых рассылок используйте пакетную отправку или задержите запросы с помощью Подождать().
7. Права доступа: почему пользователи не видят ваши сообщения
Одна из самых распространённых проблем при отправке сообщений в 1С — пользователи их не получают, хотя технически рассылка прошла успешно. В 90% случаев причина кроется в неправильно настроенных правах.
Что проверять:
- Роли пользователя: Убедитесь, что у получателя есть роль, позволяющая просматривать сообщения (например,
Пользователь с полными правамиили кастомизированная роль с правомЧтение сообщений). - Настройки уведомлений: В некоторых конфигурациях (например, 1С:Документооборот) уведомления привязаны к бизнес-процессам. Проверьте, включены ли они для пользователя.
- Фильтры: В списке сообщений может быть установлен фильтр по дате или типу, из-за которого новые уведомления не отображаются.
- Личные настройки: Пользователь мог отключить всплывающие уведомления в своём профиле (проверьте
Настройки → Личные → Уведомления).
Чтобы диагностировать проблему:
- Зайдите в систему под учётной записью пользователя, который не получает сообщения.
- Попробуйте отправить тестовое уведомление самому себе.
- Проверьте
Журнал регистрациина наличие ошибок при отправке.
Если сообщение отправлено, но не дошло до пользователя, сначала проверьте права на Справочник.ПользовательскиеСообщения. Часто администраторы забывают дать доступ к этому объекту метаданных.
8. Типичные ошибки и как их избежать
Даже опытные администраторы 1С сталкиваются с проблемами при настройке оповещений. Вот самые распространённые ошибки и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Сообщения не отправляются | Не запущен агент сервера 1С | Проверьте статус кластера в Администрирование → Кластеры серверов 1С |
| Письма уходят в спам | Не настроена SPF/DKIM для домена | Настройте записи в DNS или используйте корпоративный SMTP с авторизацией |
| Всплывающие уведомления не показываются | Отключены в настройках браузера | Добавьте адрес 1С в исключения блокировщика всплывающих окон |
| Ошибка "Нет прав на отправку" | Недостаточные права у пользователя, от имени которого отправляется сообщение | Назначьте роль Администратор или создайте кастомизированную роль |
Если вы используете облачную версию 1С (например, 1С:Fresh), учитывайте её ограничения:
- 🚫 Нет доступа к регламентным заданиям (заменяются "фоновыми задачами").
- 🔄 Ограничен функционал для работы с файловой системой (вложения в письма только через временные файлы).
- 📧 Почта отправляется через встроенный SMTP-сервис 1С, настройки которого нельзя изменить.
Для облачных решений рекомендуем использовать внешние обработки с интеграцией через API или настраивать оповещения через 1С:Директ (если доступен в вашем тарифе).
FAQ: Ответы на частые вопросы
Можно ли отправить сообщение пользователю, который не в сети?
Да. Системные уведомления и пользовательские сообщения сохраняются в базе и будут показаны при следующем входе. Email и внешние уведомления (Telegram/SMS) отправляются сразу, независимо от статуса пользователя в 1С.
Как отправить сообщение с вложением (например, отчёт в Excel)?
Для email-рассылок используйте метод Почта.Вложения.Добавить():
Почта = Новый Почта;
Почта.Вложения.Добавить("C:\Отчёты\Выручка.xlsx");
Почта.Отправить("user@example.com", "Отчёт по выручке", "Во вложении отчёт за текущий месяц.");
Для системных уведомлений вложения не поддерживаются — прикрепите файл к документу и дайте на него ссылку в тексте сообщения.
Почему в журнале регистрации видно, что сообщение отправлено, но пользователь его не получил?
Вероятные причины:
- Пользователь не имеет прав на просмотр сообщений (проверьте роль
Чтение пользовательских сообщений). - Сообщение отправлено от имени пользователя, у которого нет прав на создание уведомлений.
- В личных настройках пользователя отключены уведомления (проверьте
Настройки → Личные → Уведомления). - Если это email — письмо могло попасть в спам или быть заблокированным корпоративным почтовым фильтром.
Как отправить сообщение всем пользователям определенного подразделения?
Используйте запрос для выборки пользователей по подразделению, затем отправляйте сообщения в цикле:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Пользователи.Ссылка КАК Пользователь
ИЗ Справочник.Пользователи КАК Пользователи
ГДЕ Пользователи.Подразделение = &Подразделение";
Запрос.УстановитьПараметр("Подразделение", Справочники.Подразделения.НайтиПоНаименованию("Бухгалтерия"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Пользователь = Выборка.Пользователь;
Сообщение.Текст = "Уважаемые коллеги из бухгалтерии, завтра плановая остановка сервера 1С с 20:00 до 22:00.";
Сообщение.Отправить();
КонецЦикла;
Можно ли отложить отправку сообщения на определённое время?
Да, для этого используйте Регламентные задания (см. раздел 4) или внешние сервисы (например, отправляйте данные в Telegram-бота с задержкой через sleep() в коде бота). В самой 1С нет механизма "отложенной отправки" для пользовательских сообщений.