Автоматизация бронирования столов в ресторане: Telegram бот с интерактивным выбором даты и времени, интеграция через HTTP сервис 1С

Технические статьи
Антон Варнавский консультант 1С

В условиях высокой конкуренции ресторанного бизнеса скорость и удобство бронирования становятся критическими факторами. Для ресторана, назовем его «VR», была поставлена задача: разработать Telegram‑бот, который позволит гостям самостоятельно выбирать свободные даты и время, а затем автоматически бронировать столы в конфигурации «1С:Ресторан». При этом заказчик определил важные технические ограничения — отсутствие статического IP‑адреса и наличие файловой базы 1С, что потребовало нестандартного подхода к интеграции.

В этой статье мы подробно разберем, как было реализовано решение: от интерактивного календаря в боте до синхронизации с 1С через HTTP‑сервис без использования регламентных заданий.

1. Постановка задачи и ключевые требования

Заказчик сформулировал бизнес‑требования следующим образом:

2. Разработка Telegram‑бота

Бот реализован на Python с использованием асинхронного фреймворка aiogram. Основное внимание уделено удобному выбору даты и времени.

При первом взаимодействии с ботом пользователь видит сообщение:
«Нажмите Start, чтобы начать 👇» и кнопку START.

 После нажатия отображаются три кнопки выбора категории: «VR», «PS», «Праздник».

После выбора категории бот запрашивает дату. Используется встроенный календарь (Inline‑клавиатура), который позволяет выбрать день в пределах текущего месяца + следующего месяца. Для каждого дня бот проверяет, есть ли хотя бы один свободный стол в выбранной категории (данные о занятости бот получает от 1С и кэширует для последующих запросов).

Когда дата выбрана, бот отображает доступные временные слоты (с шагом 30 минут) в виде кнопок. Слоты формируются на основе данных о занятости столов, полученных от 1С.

Все запросы к 1С о доступности слотов выполняются через HTTP‑сервис. Чтобы не перегружать 1С, бот кэширует информацию о занятости на 1-2 минуты.

Подтверждение бронирования

Когда пользователь выбирает время, бот отправляет заявку в 1С через HTTP‑сервис. 1С проверяет актуальную занятость и возвращает результат. Если стол свободен:

Исключение

Если все столы заняты (вдруг кто-то за 5 секунд успел забронировать время, а информация в боте еще не обновилась):

Хранение заявок и обратная связь

Бот хранит все необработанные заявки в оперативной памяти. Каждой заявке присваивается уникальный идентификатор. Когда 1С запрашивает новые заявки через HTTP‑сервис, бот возвращает список заявок, которые еще не были переданы. После успешной обработки 1С сообщает боту (через тот же HTTP‑сервис), что заявка принята, и бот меняет ее статус.

Такой подход позволяет избежать потери данных при временных сбоях сети.

3. Регистр сведений для хранения записей о бронировании

В 1С создан регистр сведений БронированиеТГ со следующей структурой:

Измерения:

Ресурсы:

Этот регистр позволяет быстро проверять занятость столов на заданный момент.

4. Алгоритм обработки заявки в 1С

Когда 1С получает новую заявку от бота:

  1. Определяется список столов, соответствующих выбранной категории (маппинг описан в разделе 5).
  2. Для каждого стола проверяется:
    • Наличие записи в регистре БронированиеТГ на указанную дату и время.

    • Отсутствие в заказах статуса «Бронь» или «Активен» на это время.

  3. Если найден свободный стол:
    • Создается запись в регистре.

    • Формируется ответ: «Бронирование подтверждено», который отправляется боту.

    Если все столы заняты:

    • Выполняется поиск ближайших свободных слотов на выбранную дату (или на следующие даты).

    • Формируется сообщение с предложением альтернативного времени.

    • Ответ отправляется боту.

Автоматическое освобождение брони

Для предотвращения блокировки столов в случае неявки гостя реализован механизм:

Предварительная блокировка стола

За 30 минут до начала брони стол автоматически становится неактивным в интерфейсе фронт‑офиса. Это визуально сигнализирует администратору о скором приходе гостя и предотвращает случайное двойное бронирование вручную.

Отображение брони в интерфейсе 1С

Брони, созданные через Telegram, отображаются в стандартной схеме зала (фронт‑офис) наравне с бронями, сделанными администратором вручную. Для них установлен особый цвет (например, синий), а во всплывающей подсказке указывается источник «Telegram» и номер телефона гостя. Администратор может управлять такими бронями стандартными средствами (перенос, отмена).

Особенности реализации

В качестве архитектурного решения был выбран подход с HTTP‑сервисом внутри 1С. Данный сервис запускается через обработчик ожидания. Бот выступает в роли хранилища заявок: 1С периодически (каждые 5 секунд) опрашивает бота через HTTP, забирает новые заявки и отправляет ответы обратно. Главная сложность заключалась в том, что файловая база 1С не поддерживает регламентные задания в привычном виде (они работают только в клиент‑серверном варианте). Использование обработчика ожидания позволило организовать непрерывный цикл проверок без использования внешних планировщиков. Проблема отсутствия статического IP-адреса решена за счет HTTP-сервиса, который запускается внутри 1С. Бот обращается к этому сервису по локальному адресу. Так как бот и 1С находятся в одной локальной сети, проблем с маршрутизацией не возникает.

5. Маппинг категорий на столы

В соответствии с требованиями заказчика:

Это соответствие задано в справочнике 1С при выборе столов для каждой заявки.

6. Эффект внедрения и перспективы

После запуска бота были достигнуты следующие результаты:

В планах по доработке:

7. Заключение

Разработанное решение демонстрирует, что можно построить надежную автоматизированную систему бронирования на базе Telegram‑бота, даже при наличии таких ограничений, как файловая база 1С и отсутствие статического IP‑адреса. Использование HTTP‑сервиса внутри 1С и интерактивного интерфейса с выбором даты/времени позволило создать удобный инструмент как для гостей, так и для сотрудников ресторана. Такой подход может быть масштабирован на любые другие типы бронирования (не только столы) и адаптирован под различные конфигурации 1С.

Разработка и новости из мира 1С
Подпишитесь на Телеграм-канал, чтобы быть в курсе
Подписаться

Эту статью хорошо дополняют

Доставка в 1С:ERP. Инструкция по работе с базовым функционалом

Склад в 1С: ERP — обзор возможностей (часть 3)

Реализация конфигурации с нуля. Портал для клиентов организации с синхронизацией с учетной системой

Получить консультацию

Наш специалист по 1С ответит на все вопросы и подберёт оптимальное решение ваших задач

Нужна помощь, но не знаете, с чего начать?

Напиште нам - мы поможем. Выслушаем Ваши задачи для бизнеса и подберём вариант развития

Лидия Алимова
Руководитель отдела продаж implecs
Иконка стрелки вверх