Автоматизация · 10 мин
Как создать чат-бота для 1С: интеграция и настройка
Как создать чат-бота для 1С: выбор платформы, настройка интеграции через HTTP-сервисы, пример кода на встроенном языке, типичные ошибки и проверка результата.
Чат-бот для 1С — это программа, которая принимает сообщения пользователей в мессенджере (Telegram, WhatsApp, ВКонтакте) и обменивается данными с информационной базой: отвечает на вопросы об остатках, оформляет заявки, присылает статусы заказов. Бот не заменяет интерфейс 1С, а становится дополнительным каналом доступа к данным для сотрудников и клиентов.
Технически схема всегда выглядит одинаково: мессенджер передаёт сообщение на сервер, сервер обращается к 1С через HTTP-сервис или веб-сервис, 1С формирует ответ, и бот отправляет его пользователю. Различия между реализациями — в том, где размещена логика бота: полностью внутри 1С, во внешнем скрипте или в готовом коннекторе.
Перед началом работы определите задачи бота. От этого зависит архитектура: простой бот-справочник по остаткам требует только чтения данных, а бот для приёма заказов должен создавать документы, проверять контрагентов и обрабатывать ошибки. Чем шире функциональность, тем важнее продумать права доступа и защиту данных.
Выбор архитектуры: где будет работать логика бота
Существует три рабочих подхода. Первый — вся логика внутри 1С: в конфигурации создаётся HTTP-сервис, который принимает запросы от мессенджера, обрабатывает их встроенным языком и возвращает ответ. Это самый прямой путь, не требующий дополнительных серверов, но он нагружает базу и требует её публикации на веб-сервере.
Второй подход — внешний скрипт-посредник (на Python, Node.js или PHP), который общается с мессенджером, а к 1С обращается через OData, HTTP-сервисы или COM-соединение. Такой вариант разгружает базу и упрощает работу с API мессенджеров, для которых есть готовые библиотеки.
Третий вариант — готовые коннекторы и платформы-конструкторы ботов с поддержкой 1С. Они подходят, когда нет разработчика, но ограничивают гибкость и обычно требуют подписки.
Сравнение вариантов архитектуры
Подходит для простых сценариев и когда нет отдельного сервера. Ограничение: база должна быть опубликована, нагрузка ложится на сервер 1С.
Подходит для сложных сценариев, нескольких мессенджеров и высокой нагрузки. Ограничение: нужен отдельный сервер и поддержка скрипта.
Подходит для быстрого запуска без программирования. Ограничение: зависимость от сервиса, стоимость подписки, ограниченная кастомизация.
Регистрация бота в мессенджере
Проще всего начать с Telegram — у него открытый API и бесплатная регистрация. Найдите в Telegram официального бота @BotFather, отправьте команду /newbot, укажите имя и уникальное имя пользователя, заканчивающееся на «bot». В ответ вы получите токен — строку вида 123456789:AAE..., которая является ключом доступа к API. Храните её как пароль: любой, кто узнает токен, сможет управлять ботом.
Для WhatsApp и ВКонтакте процедура сложнее: WhatsApp Business API требует регистрации через официальных провайдеров, а для ВКонтакте нужен токен сообщества с правами на сообщения. Учитывайте это при выборе канала: для внутренних задач компании Telegram обычно оптимален, для работы с клиентами может потребоваться WhatsApp.
Публикация HTTP-сервиса в 1С
Для приёма сообщений от мессенджера в конфигурации создаётся объект «HTTP-сервис». В дереве конфигурации откройте ветку «Общие — HTTP-сервисы», добавьте новый сервис, задайте корневой URL (например, bot) и создайте шаблон URL с методом POST. В модуле метода будет размещён код обработки входящих запросов.
После создания сервиса базу нужно опубликовать на веб-сервере (IIS или Apache) с включённой публикацией HTTP-сервисов. Для приёма webhook-запросов от Telegram сервер должен быть доступен из интернета по HTTPS с действительным сертификатом — это обязательное требование мессенджера. Если база находится в локальной сети, используйте выделенный шлюз или туннель.
Альтернатива webhook — режим long polling, когда 1С сама периодически опрашивает API Telegram методом getUpdates через регламентное задание. Этот способ не требует открытия базы в интернет и подходит для пилотных проектов и внутренних ботов.
Пример кода: приём сообщения и ответ
Минимальный обработчик HTTP-сервиса читает тело запроса, извлекает текст сообщения и идентификатор чата, формирует ответ и отправляет его через HTTP-запрос к API Telegram. Ниже упрощённый пример на встроенном языке 1С.
Функция ОбработатьЗапрос(Запрос)
Тело = Запрос.ПолучитьТелоКакСтроку();
Данные = ПрочитатьJSON(Тело);
ИдЧата = Данные.message.chat.id;
Текст = Данные.message.text;
Если Текст = "/ostatok" Тогда
Ответ = ПолучитьОстаткиИзБазы();
Иначе
Ответ = "Команда не распознана. Доступно: /ostatok";
КонецЕсли;
ОтправитьСообщениеTelegram(ИдЧата, Ответ);
Возврат Новый HTTPСервисОтвет(200);
КонецФункцииФункция отправки сообщения формирует HTTPS-запрос к адресу api.telegram.org с методом sendMessage, передавая токен, идентификатор чата и текст в формате JSON. Для защищённого соединения используйте объект ЗащищенноеСоединениеOpenSSL.
Данные из базы (остатки, статусы заказов, задолженность) получайте обычными запросами на встроенном языке. Проверяйте входящий текст строго по списку команд — не передавайте произвольный текст пользователя напрямую в запросы к базе, чтобы исключить извлечение лишних данных.
Расширение функциональности: команды, кнопки, уведомления
Когда базовый обмен работает, добавьте структуру команд. Типовой набор для торговой компании: остатки по номенклатуре, статус заказа по номеру, задолженность контрагента, регистрация заявки. Каждой команде соответствует отдельная процедура в коде и, при необходимости, проверка прав пользователя.
Идентификацию пользователей удобно делать через таблицу соответствий: в регистре сведений храните связку «идентификатор чата — пользователь 1С или контрагент». При первом обращении бот запрашивает код подтверждения, который сотрудник получает в 1С, — так вы привяжете чат к конкретному человеку и сможете ограничивать доступ к данным.
Кроме ответов на команды, бот может отправлять инициативные уведомления: о поступлении оплаты, изменении статуса заказа, окончании срока договора. Для этого используйте регламентное задание или подписку на событие записи документа, которая вызывает процедуру отправки сообщения.
Inline-кнопки вместо текстовых команд
Telegram позволяет прикреплять к сообщениям кнопки (inline keyboard), при нажатии на которые приходит callback-запрос. Это удобнее текстовых команд: пользователь видит меню и не может ошибиться во вводе. Обрабатывайте callback_query в том же HTTP-сервисе, где обрабатываются обычные сообщения.
Тестирование и проверка результата
Тестируйте бота на копии базы, а не на рабочей. Проверьте три уровня: доставку сообщений (бот отвечает на любую команду), корректность данных (остатки из бота совпадают с отчётом в 1С), обработку ошибок (что отвечает бот на неизвестную команду, пустой запрос, недоступность базы).
Полезно вести журнал обращений: записывайте входящие сообщения и ответы в регистр сведений. Это поможет находить ошибки в логике и анализировать, какими командами пользуются чаще всего.
Как проверить результат
Бот отвечает в течение нескольких секунд корректными данными
Ответа нет, приходит ошибка или данные не совпадают с базой
Бот возвращает подсказку со списком команд
Бот молчит или возвращает техническую ошибку
Пользователь видит только свои данные (свои заказы, свою задолженность)
По команде можно получить данные любого контрагента
При массовых обращениях база работает стабильно
Запросы бота блокируют работу пользователей 1С
Типичные ошибки и ограничения
Самая частая ошибка — публикация рабочей базы в интернет без должной защиты. HTTP-сервис без аутентификации и проверки источника запросов становится открытой точкой входа в данные компании. Минимум: проверяйте секретный параметр в URL webhook, ограничивайте список команд, используйте отдельного пользователя 1С с усечёнными правами для обработки запросов бота.
Вторая группа ошибок связана с производительностью: тяжёлые запросы к базе внутри обработчика сообщений приводят к тайм-аутам и зависаниям. Выносите длительные операции в фоновые задания, а боту сразу отвечайте «запрос принят, результат придёт отдельным сообщением».
FAQ
Можно ли создать бота без программирования на встроенном языке 1С?
Да, через готовые коннекторы и платформы-конструкторы, которые подключаются к 1С через стандартные механизмы обмена. Вы настраиваете сценарии в визуальном редакторе. Минус — ограниченная гибкость и стоимость подписки при росте числа пользователей.
Какой мессенджер выбрать для корпоративного бота?
Для внутренних задач чаще всего выбирают Telegram из-за бесплатного и простого API. Если клиенты компании преимущественно в WhatsApp, потребуется подключение через официального провайдера Business API — это платно и дольше в настройке.
Нужна ли публикация базы в интернете?
Не обязательно. Режим опроса getUpdates позволяет 1С самой забирать сообщения с серверов Telegram исходящими запросами, поэтому база может оставаться в закрытой локальной сети. Публикация нужна только для мгновенной доставки через webhook.
Как ограничить доступ к боту только для сотрудников?
Ведите в регистре сведений список разрешённых идентификаторов чатов. При первом обращении бот запрашивает код приглашения, который администратор выдаёт сотруднику. Запросы от незарегистрированных чатов игнорируйте или отвечайте отказом.
Что делать, если бот перестал отвечать?
Проверьте по цепочке: доступность сервера мессенджера из сети, работу веб-сервера и публикации, не истёк ли SSL-сертификат, нет ли ошибок в журнале регистрации 1С, не перевыпускался ли токен. Чаще всего причина — истёкший сертификат или изменение адреса публикации.
Что важно запомнить
Чат-бот для 1С строится на связке «бот в мессенджере — HTTP-сервис или скрипт-посредник — запросы к базе». Начните с Telegram и простого сценария, тестируйте на копии базы, защитите токен и ограничьте доступ по списку чатов. Сложные операции выносите в фоновые задания, а журнал обращений ведите с первого дня.