AI и машинное обучение 11.07.2026 ~8 мин чтения

1С и Telegram: остатки, заказы и уведомления

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

1С и Telegram: остатки, заказы и уведомления

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

В West Star Ltd мы сталкивались с этим запросом в нескольких проектах: оптовая компания хотела, чтобы торговый представитель мог проверить остаток товара прямо из Telegram, не звоня на склад; производственная компания — получать уведомление о поступлении оплаты без открытия 1С. В обоих случаях интеграция решила задачу — но у каждого варианта реализации есть своя цена и свои ограничения, которые важно понимать заранее.

ДВА ПОДХОДА К ИНТЕГРАЦИИ

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

Первый подход — опрос 1С из Telegram-бота. Пользователь пишет боту, бот обращается к 1С через OData или HTTP-сервис, получает данные и отвечает пользователю. Это самый распространённый сценарий для справочных запросов: «какой остаток по товару X?», «какова задолженность контрагента Y?», «статус заказа номер Z?».

Второй подход — уведомления из 1С в Telegram. 1С при наступлении события (поступление оплаты, превышение лимита дебиторки, статус документа) самостоятельно отправляет сообщение в чат через Telegram Bot API. Это работает через регламентные задания в 1С, которые периодически проверяют условие и отправляют HTTP-запрос к Telegram API.

Оба подхода можно комбинировать в одном боте: пользователь задаёт вопрос (первый подход), а бот дополнительно присылает оповещения без запроса (второй подход).

КАК УСТРОЕНА СПРАВОЧНАЯ ЧАСТЬ: БОТ ЗАПРАШИВАЕТ 1С

Для реализации первого подхода нужны два компонента: Python-бот на библиотеке python-telegram-bot или aiogram, и адаптер для работы с 1С через OData (о котором мы подробно писали ранее).

Типичный сценарий работы такой:

  1. Менеджер пишет боту: /остаток Ноутбук Lenovo
  2. Бот принимает команду, извлекает поисковый запрос «Ноутбук Lenovo»
  3. Обращается к 1С через OData: Catalog_Номенклатура?$filter=contains(Description,'Ноутбук Lenovo')
  4. По найденному Ref_Key запрашивает AccumulationRegister_ТоварыНаСкладах_Balance
  5. Форматирует ответ и отправляет в чат: «Ноутбук Lenovo IdeaPad: 12 шт на складе Основной»

Упрощённый пример кода:

    from telegram import Update
    from telegram.ext import Application, CommandHandler, ContextTypes
    from services.onec import OneCAdapter

    adapter = OneCAdapter()

    async def cmd_balance(update: Update, context: ContextTypes.DEFAULT_TYPE):
        query = " ".join(context.args)
        if not query:
            await update.message.reply_text("Укажите название товара: /остаток Товар")
            return
        items = adapter._get(
            "Catalog_Номенклатура",
            {"$filter": f"contains(Description,'{query}') and DeletionMark eq false",
             "$select": "Ref_Key,Description",
             "$top": 5}
        )
        if not items:
            await update.message.reply_text("Товар не найден.")
            return
        lines = []
        for item in items:
            bal = adapter._get(
                "AccumulationRegister_ТоварыНаСкладах_Balance",
                {"$filter": f"Номенклатура_Key eq guid'{item['Ref_Key']}'",
                 "$select": "КоличествоBalance"}
            )
            qty = bal[0]["КоличествоBalance"] if bal else 0
            lines.append(f"{item['Description']}: {qty} шт")
        await update.message.reply_text("\n".join(lines))

    app = Application.builder().token("BOT_TOKEN").build()
    app.add_handler(CommandHandler("остаток", cmd_balance))
    app.run_polling()

В реальном проекте к этому добавляются: авторизация пользователей по chat_id (чтобы бот не отвечал посторонним), кеш результатов на 5–15 минут, обработка ошибок при недоступности 1С, логирование запросов.

КАК УСТРОЕНЫ УВЕДОМЛЕНИЯ: 1С ПИШЕТ В TELEGRAM

Второй подход — уведомления из 1С — реализуется через регламентную задачу или событие в 1С, которое отправляет HTTP-запрос к Telegram Bot API.

Для этого в 1С создаётся HTTP-соединение:

    Соединение = Новый HTTPСоединение("api.telegram.org", 443, , , , , Новый ЗащищённоеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос("/bot" + Токен + "/sendMessage");
    Запрос.УстановитьЗаголовок("Content-Type", "application/json");
    Тело = "{""chat_id"": """ + ИД_Чата + """, ""text"": """ + Сообщение + """}";
    Запрос.УстановитьТелоИзСтроки(Тело);
    Соединение.ОтправитьДляОбработки(Запрос);

Регламентная задача (например, каждые 5 минут) проверяет условие — «появились новые оплаты за последние 5 минут» — и если да, формирует сообщение и отправляет его в нужный чат или группу.

Важный нюанс: chat_id получателя нужно узнать заранее. Проще всего попросить сотрудника написать любое сообщение боту и записать полученный chat_id в таблицу соответствий «сотрудник — chat_id». Это делается один раз при настройке.

Типичные сценарии для уведомлений из 1С:
— Поступление оплаты от клиента: «Иванов А.А. оплатил счёт №152 на 450 000 тг»
— Превышение лимита дебиторской задолженности
— Окончание срока действия договора или доверенности
— Критически низкий остаток товара (ниже порога)
— Статус выполнения заказа изменился на «Отгружен»

СЦЕНАРИЙ С СОЗДАНИЕМ ЗАЯВКИ В 1С

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

Для записи данных в 1С через OData используется метод POST:

    def create_order(customer_key, items):
        payload = {
            "Контрагент_Key": customer_key,
            "СоглашениеОбУсловияхПродажи_Key": "...",
            "Товары": [
                {
                    "Номенклатура_Key": item["ref"],
                    "Количество": item["qty"],
                    "Цена": item["price"]
                }
                for item in items
            ]
        }
        resp = requests.post(
            f"{BASE_URL}/Document_ЗаказКлиента",
            json=payload,
            auth=ONEC_AUTH,
            headers={"Content-Type": "application/json"},
            timeout=30
        )
        resp.raise_for_status()
        return resp.json()

Однако запись через OData требует строгого соблюдения структуры документа 1С и не всегда корректно отрабатывает бизнес-логику (заполнение цен по прайс-листу, контроль лимитов). Надёжнее для создания документов использовать HTTP-сервис, написанный 1С-разработчиком специально под ваши задачи — он инкапсулирует логику 1С и принимает упрощённый JSON от бота.

КТО АВТОРИЗУЕТСЯ В БОТЕ

Критичный вопрос, который часто упускают на стадии проектирования: кто имеет право работать с этим ботом и видеть данные 1С? По умолчанию любой, знающий @имя бота, может писать ему. Для внутреннего корпоративного бота это недопустимо.

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

Для крупных компаний можно настроить ролевой доступ: менеджер видит только своих клиентов и свои заказы, руководитель отдела — все заказы отдела, директор — сводку по компании.

Ещё один работающий паттерн — одноразовый токен при первом входе. Пользователь открывает бота, нажимает «Подключиться» и вводит код, который ему выдаёт администратор в 1С. Бот запоминает chat_id и связывает его с пользователем 1С. Последующие запросы автоматически фильтруются по этому пользователю — без дополнительной авторизации.

ОГРАНИЧЕНИЯ И СЛАБЫЕ МЕСТА

— OData подходит для чтения данных, но запись через него требует точного соблюдения структуры 1С. Ошибки в формате запроса часто дают неинформативные сообщения об ошибке 500. Для записи надёжнее HTTP-сервисы.

— Регламентные задания в 1С для отправки уведомлений могут блокироваться, если у пользователя задания нет доступа в интернет (настройки фаервола на сервере 1С). Это типичная проблема при первом запуске: уведомления не приходят, и причину непросто найти без проверки логов 1С.

— Telegram не гарантирует доставку сообщений при недоступности сети. Если сервер 1С и сервер бота находятся за NAT без белого IP, вебхуки не работают — нужно использовать polling, что создаёт задержку уведомлений.

— Скорость ответа зависит от производительности 1С. При высокой загрузке базы запрос от бота может выполняться 5–10 секунд. Для пользователя это долго — нужно либо кешировать данные, либо сообщать «идёт загрузка...» и отвечать асинхронно.

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

— Поддержка и мониторинг. Бот — ещё один сервис, который может упасть. Без мониторинга uptime и алертов при ошибках пользователи будут сообщать об этом устно, причём через несколько дней.

ПРАКТИЧЕСКИЙ ВЫВОД

Специалисту. Начните с простого сценария — справочные запросы через OData. Это запускается за 1–2 дня при уже работающем OData-подключении. Авторизацию по chat_id добавьте сразу, не откладывайте. Для уведомлений из 1С проверьте, что у пользователя регламентных заданий есть доступ к api.telegram.org через фаервол сервера.

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

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

ЧАСТЫЕ ВОПРОСЫ

Нужно ли дорабатывать 1С для интеграции с Telegram?

Для справочных запросов через OData — нет, достаточно включённой публикации веб-базы. Для создания документов и для уведомлений из 1С — нужна доработка: либо HTTP-сервис (несколько часов работы 1С-разработчика), либо регламентное задание с отправкой запросов к Telegram API.

Можно ли подключить бот к группе или каналу, а не к личному чату?

Да. Telegram-бот может отправлять сообщения в группы и каналы, если его туда добавить и получить chat_id группы. Многие компании создают закрытую группу «Уведомления 1С» и добавляют туда нужных сотрудников — удобнее, чем личные сообщения каждому.

Насколько безопасно хранить данные 1С через Telegram?

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

Что если 1С недоступна — бот зависнет?

Без явного таймаута запрос к 1С действительно может «подвесить» обработчик. Устанавливайте timeout=15 на запросы к 1С, ловите исключение RequestException и отвечайте пользователю «Данные временно недоступны, попробуйте через несколько минут». Это значительно лучше, чем молчание бота.

AI и машинное обучение
Поделиться статьёй

Комментарии (0)

Пока нет комментариев. Будьте первым!

Нужна интеграция 1С?

Мы реализуем интеграцию на стеке Django + 1C OData API. Свяжитесь для бесплатной консультации.

Обсудить проект