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

Автоматизация · 12 мин

Как отправить сообщение из 1С в Telegram

Как отправить сообщение из 1С в Telegram: создание бота через BotFather, получение токена и chat_id, HTTP-запросы из 1С, обработка ошибок и типовые проблемы интеграции.

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

Технически отправка сводится к одному HTTP-запросу к API Telegram: 1С формирует POST-запрос с текстом сообщения, а бот доставляет его в нужный чат. Всё, что понадобится, — зарегистрированный бот, его токен и идентификатор чата получателя. Никаких внешних компонентов и платных сервисов для базового сценария не требуется.

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

Создание бота и получение токена

Первый шаг выполняется в самом Telegram и занимает несколько минут. Откройте диалог с официальным ботом @BotFather и отправьте команду /newbot. Сервис попросит указать название бота (произвольное, отображается в чатах) и уникальное имя пользователя, которое обязательно заканчивается на «bot», например mycompany_1c_notify_bot.

После регистрации BotFather выдаст токен — строку вида 1234567890:AAEhBOweik6ad9r_QXMENQjcrGbqCr4K-4c. Это ключ доступа к API: любой, кто знает токен, может отправлять сообщения от имени вашего бота. Храните его в защищённом месте: в 1С токен лучше держать в константе с ограниченным доступом или в безопасном хранилище, а не зашивать напрямую в код общих модулей.

Если токен скомпрометирован, его можно перевыпустить командой /revoke у BotFather — старый токен перестанет работать, и его нужно будет заменить во всех местах использования.

Получение chat_id получателя

Бот не может просто «написать пользователю по номеру телефона» — сообщение отправляется в конкретный чат, идентифицируемый числовым chat_id. Для личных уведомлений получатель должен сначала сам найти вашего бота в Telegram и нажать «Запустить» (отправить /start). Без этого действия API вернёт ошибку, и сообщение не уйдёт.

Узнать chat_id можно двумя способами. Простой: после того как пользователь написал боту, откройте в браузере адрес https://api.telegram.org/bot<токен>/getUpdates — в JSON-ответе найдите блок "chat":{"id":..., это и есть искомый идентификатор. Для личного чата это положительное число, для группы — отрицательное.

Для групповых уведомлений добавьте бота в группу и отправьте в ней любое сообщение — chat_id группы появится в том же ответе getUpdates. Если бот должен писать в канал, добавьте его администратором канала, а в качестве chat_id можно использовать @имя_канала.

Порядок действий
  1. 1
    Создайте бота через @BotFather командой /newbot и сохраните токен
  2. 2
    Попросите получателя запустить бота командой /start или добавьте бота в группу
  3. 3
    Выполните запрос getUpdates и найдите chat_id нужного чата
  4. 4
    Сохраните токен и chat_id в настройках 1С (константа или регистр сведений)
  5. 5
    Напишите процедуру отправки через HTTPСоединение и протестируйте её
  6. 6
    Проверьте доставку сообщения и обработайте возможные ошибки

Код отправки сообщения из 1С

Для отправки используется метод sendMessage API Telegram. Из 1С запрос выполняется стандартными объектами встроенного языка — HTTPСоединение и HTTPЗапрос. Пример процедуры для клиент-серверного или файлового варианта:

Процедура ОтправитьСообщениеТелеграм(ТекстСообщения) Экспорт

Токен = "1234567890:AAEhBOweik6ad9r_QXMENQjcrGbqCr4K-4c";

ChatID = "123456789";

Сервер = "api.telegram.org";

АдресРесурса = "/bot" + Токен + "/sendMessage";

ТелоЗапроса = "{""chat_id"":""" + ChatID + """,""text"":"""

+ ТекстСообщения + """}";

Соединение = Новый HTTPСоединение(Сервер, 443, , , , ,

Новый ЗащищенноеСоединениеOpenSSL);

Запрос = Новый HTTPЗапрос(АдресРесурса);

Запрос.Заголовки.Вставить("Content-Type", "application/json");

Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния <> 200 Тогда

ЗаписьЖурналаРегистрации("Telegram",

УровеньЖурналаРегистрации.Ошибка, , ,

"Код " + Ответ.КодСостояния + ": " + Ответ.ПолучитьТелоКакСтроку());

КонецЕсли;

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

Обратите внимание на детали. Соединение устанавливается по HTTPS (порт 443) с объектом ЗащищенноеСоединениеOpenSSL — без него платформа выдаст ошибку, так как API Telegram работает только по защищённому протоколу. Тело запроса формируется в формате JSON, а кавычки внутри строки 1С удваиваются.

Если в тексте сообщения могут встречаться кавычки, переносы строк или спецсимволы, надёжнее собирать JSON через объект ЗаписьJSON, а не конкатенацией строк — это исключит ошибки разбора на стороне API. Перенос строки в тексте сообщения передаётся символом \n.

Варианты внедрения в конфигурацию

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

Сравнение вариантов

Собственная доработка (общий модуль + подписки на события)

Максимальная гибкость: любые события, любой текст. Требует навыков программирования 1С и снимает конфигурацию с полной поддержки при изменении типовых модулей

Расширение конфигурации

Код отправки и подписки выносятся в расширение — типовая конфигурация не меняется и обновляется штатно. Оптимальный вариант для типовых решений

Готовые внешние обработки и подсистемы

Быстрый старт без программирования: настройки токена, шаблоны сообщений. Ограниченная гибкость и зависимость от качества стороннего решения

Для типовых конфигураций (УТ, ERP, Бухгалтерия) рекомендуется вариант с расширением: вы добавляете общий модуль с процедурой отправки и подписки на события записи документов — например, при проведении заказа покупателя менеджеру приходит уведомление. Типовая конфигурация при этом остаётся на поддержке.

Точки подключения уведомлений выбирайте по бизнес-событиям: запись или проведение документа, изменение статуса заказа, завершение обмена данными, падение регламентного задания. Не вешайте отправку на слишком частые события — иначе получатели начнут игнорировать поток сообщений.

Форматирование и дополнительные возможности

Telegram поддерживает разметку сообщений: жирный текст, курсив, моноширинный шрифт, ссылки. Для этого в запрос добавляется параметр parse_mode со значением HTML или MarkdownV2, а текст оформляется соответствующими тегами. Например, с HTML-разметкой можно выделить номер заказа жирным: <b>Заказ № 12345</b>.

Помимо текста, API позволяет отправлять документы (метод sendDocument) — так из 1С можно высылать в чат сформированные PDF-счета или отчёты. Файл передаётся в теле multipart-запроса, что требует чуть более сложного формирования HTTP-запроса, но реализуется теми же штатными средствами платформы.

Полезная возможность — инлайн-кнопки (reply_markup с inline_keyboard): получатель может, например, подтвердить согласование прямо из чата. Однако обработка нажатий потребует уже двусторонней интеграции — 1С должна будет опрашивать getUpdates или принимать webhook, что заметно сложнее односторонней отправки.

Для согласований и уведомлений руководству обычно достаточно односторонней отправки текста с разметкой HTML. Двустороннюю интеграцию с кнопками имеет смысл делать только когда без реакции в чате процесс действительно не двигается дальше — иначе вы получите сложный в поддержке механизм без отдачи.
ПЗ
Практическое замечание

Обработка ошибок и типичные проблемы

API Telegram при ошибке возвращает HTTP-код, отличный от 200, и JSON с описанием причины. Самые частые ситуации: код 403 с текстом «bot was blocked by the user» (пользователь заблокировал бота или не нажал /start), код 400 «chat not found» (неверный chat_id), код 401 (неверный токен), код 429 (превышен лимит частоты запросов — нужно снизить темп отправки).

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

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

Типичные ошибки
01
Зашитый в код токен — при смене токена приходится править модули, а при утечке кода утекает и доступ к боту
02
Отправка на клиенте — у пользователя без доступа в интернет сообщения молча не уходят
03
Конкатенация JSON строками — кавычка или спецсимвол в тексте сообщения ломает запрос
04
Отправка без проверки кода ответа — ошибки 403 и 400 не замечают, пока не пропадёт важное уведомление
05
Слишком частые уведомления — получатели отключают звук чата и игнорируют даже важные сообщения

Проверка результата и ограничения

После внедрения проверьте полный цикл: создайте тестовое событие (например, запишите тестовый документ) и убедитесь, что сообщение пришло в нужный чат с корректным текстом и разметкой. Проверьте также поведение при недоступном интернете — процедура не должна «ронять» основной бизнес-процесс, отправка должна выполняться в попытке/исключении.

Учитывайте ограничения платформы Telegram: бот не может первым написать пользователю, который его не запустил; есть лимиты на частоту отправки (при массовых рассылках нужны паузы между сообщениями); максимальная длина одного текстового сообщения — 4096 символов, более длинный текст нужно разбивать на части.

Если прямой доступ к api.telegram.org из вашей сети затруднён, рассмотрите альтернативы: отправку через промежуточный сервис-шлюз внутри инфраструктуры или использование корпоративных мессенджеров с аналогичным API. Логика кода 1С при этом меняется минимально — отличаются только адрес сервера и формат тела запроса.

Итог

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

Отправка сообщения из 1С в Telegram — это один HTTPS-запрос к методу sendMessage с токеном бота и chat_id. Создайте бота через BotFather, храните токен в безопасности, выполняйте отправку на сервере с обработкой ошибок, а для типовых конфигураций оформляйте доработку расширением.

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

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

Частично — с помощью готовых внешних обработок и подсистем, где достаточно указать токен и chat_id в настройках. Но привязка уведомлений к конкретным событиям вашей конфигурации всё равно обычно требует минимальной доработки, поэтому полностью без кода обходятся редко.

Почему бот не отправляет сообщение пользователю, хотя chat_id верный?

Наиболее вероятная причина — пользователь ни разу не запускал бота командой /start или заблокировал его. Попросите получателя найти бота в поиске Telegram и нажать «Запустить», затем повторите отправку и проверьте код ответа API.

Как отправить сообщение сразу нескольким получателям?

Метод sendMessage работает с одним чатом, поэтому для рассылки нужно вызывать его в цикле по списку chat_id. Список получателей удобно хранить в регистре сведений. При большом количестве адресатов добавляйте паузы между запросами, чтобы не получить ограничение 429.

Работает ли отправка из файловой базы 1С?

Да, файл-серверный вариант ничем не ограничивает HTTP-запросы — они выполняются с того компьютера, где запущен сеанс 1С. Важно лишь, чтобы с этого компьютера был доступ в интернет и к api.telegram.org. Для стабильности в файловой базе отправку часто выносят в отдельный сеанс или выполняют по расписанию.

Можно ли прикрепить к сообщению файл, например PDF-счёт?

Да, для этого используется метод sendDocument: файл передаётся в теле multipart-запроса или сначала загружается, а затем отправляется по file_id. Это требует более сложного формирования HTTP-запроса, но реализуется штатными средствами платформы без внешних компонентов.

Безопасно ли передавать данные из 1С через Telegram?

Трафик между сервером 1С и API Telegram шифруется по HTTPS, однако содержимое сообщений проходит через серверы мессенджера. Не отправляйте в чаты персональные данные, пароли и коммерческую тайну в открытом виде — ограничьтесь уведомлениями с минимально необходимой информацией и ссылками на объекты в 1С.