# Отправка сообщений из 1С в Telegram: код, chat_id и подводные камни

> Для уведомлений из 1С нужны бот, токен и вызов метода sendMessage через HTTPСоединение. Главная сложность в том, чтобы привязать пользователя 1С к его chat_id, а не в самом коде отправки. Токен нельзя хранить в тексте модуля, а отправку лучше выносить в фоновое задание.

Дата: 2026-10-30 · Источник: https://oneswitch.ru/blog/otpravka-soobshchenij-iz-1s-v-telegram/

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

## Как это устроено

1. В Telegram через **@BotFather** создаётся бот, вы получаете **токен**.
2. Пользователь пишет боту, и Telegram присваивает ему **chat_id**.
3. 1С вызывает метод **sendMessage** Telegram Bot API по HTTPS, передав токен и chat_id.

Сложность не в отправке, а в **привязке**: Telegram позволяет писать только тому, кто сам начал диалог с ботом, и только по его chat_id. Поэтому в 1С нужно хранить соответствие «пользователь или сотрудник → chat_id».

## Отправка сообщения: код

```bsl
Функция ОтправитьВTelegram(Токен, ИдЧата, Текст) Экспорт

	Данные = Новый Структура("chat_id, text, parse_mode", ИдЧата, Текст, "HTML");

	Запись = Новый ЗаписьJSON;
	Запись.УстановитьСтроку();
	ЗаписатьJSON(Запись, Данные);
	Тело = Запись.Закрыть();

	Запрос = Новый HTTPЗапрос("/bot" + Токен + "/sendMessage");
	Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
	Запрос.УстановитьТелоИзСтроки(Тело, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

	Соединение = Новый HTTPСоединение("api.telegram.org", , , , , 30, Новый ЗащищенноеСоединениеOpenSSL());
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);

	Если Ответ.КодСостояния <> 200 Тогда
		ВызватьИсключение "Telegram вернул код " + Ответ.КодСостояния + ": " + Ответ.ПолучитьТелоКакСтроку();
	КонецЕсли;

	Возврат Ответ.ПолучитьТелоКакСтроку();

КонецФункции
```

Проверьте код на своей версии платформы: имена методов и параметры конструктора могут отличаться в старых релизах.

## Как узнать chat_id пользователя

Есть два рабочих способа:

- **Вручную для себя или админа:** напишите боту, затем откройте в браузере `https://api.telegram.org/bot<токен>/getUpdates` и найдите `chat.id` в ответе.
- **Для сотрудников:** бот предлагает кнопку «Поделиться контактом». Telegram присылает номер телефона, а 1С находит по нему пользователя и сохраняет chat_id в регистре сведений. **Обязательно проверяйте, что контакт принадлежит самому отправителю:** в данных контакта `user_id` должен совпадать с `from.id`. Иначе кто угодно сможет «подсунуть» чужой номер и получать чужие уведомления.

## Подводные камни

- **Токен.** Не храните его в тексте модуля. Вынесите в константу с ограниченным доступом или в безопасное хранилище, чтобы он не попал в выгрузку конфигурации и в Git.
- **Лимиты.** По справке Telegram, бот может отправлять около 30 сообщений в секунду в целом и около одного сообщения в секунду в один чат. Для массовых рассылок делайте паузу и очередь.
- **Не блокируйте проведение.** Отправку выносите в **фоновое задание** или регламентное задание, иначе недоступный интернет замедлит документ. Ошибки пишите в журнал регистрации.
- **Недоставленные сообщения.** Если пользователь заблокировал бота, Telegram вернёт ошибку: помечайте такого получателя и не пытайтесь слать снова.
- **Формат текста.** При `parse_mode` = `HTML` экранируйте символы `<`, `>` и `&` в данных из базы.

## Входящие сообщения: webhook или опрос

Если боту нужно принимать команды (например, «Согласовать документ»), есть два способа:
- **Webhook:** Telegram сам присылает обновления на ваш HTTPS-адрес. Нужен доступный из интернета адрес с сертификатом, обычно это HTTP-сервис 1С или отдельный сервер.
- **Опрос getUpdates** регламентным заданием: проще, не требует внешнего адреса, но с задержкой.

## Когда проще не писать самому

Если нужны согласования в боте, карточки документов, связка с несколькими базами или интеграция сайта и бота, удобнее вынести логику на отдельный сервис (Python или n8n), а 1С оставить источником событий и данных. Подробнее об интеграциях 1С с Telegram, сайтами и другими системами в разделе [«1С и учётные системы»](/uslugi/1c/) и в услуге [«Telegram-боты и Mini App»](/uslugi/telegram-boty-i-mini-app/).

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

### Можно ли отправить сообщение в группу или канал?

Да. Добавьте бота в группу или канал администратором и используйте chat_id группы (он начинается с минуса) или `@имя_канала`.

### Нужен ли для отправки внешний сервер?

Нет. Для отправки достаточно, чтобы сервер 1С имел доступ в интернет к `api.telegram.org`. Внешний адрес нужен только для приёма сообщений через webhook.

### Что делать, если из 1С запрос не проходит?

Проверьте доступ сервера 1С к интернету и прокси, версию платформы, корректность токена и кодировку тела (UTF-8). В тексте ошибки Telegram обычно указано, чего не хватает.

### Как безопасно хранить токен?

В константе или регистре с ограничением по ролям, а не в тексте модуля. Если токен попал в выгрузку или репозиторий, перевыпустите его в @BotFather.
