Telegram-бот к файловой базе 1С без веб-публикации
Бот нужен, а база файловая: ни адреса, ни веб-сервера, ни службы. Разбираем, как отдать данные боту и не публиковать базу наружу.
Задача
Просьба звучит просто: пусть бот в Telegram показывает остаток по товару, долг клиента или статус заказа. Хозяин бизнеса хочет спрашивать с телефона, не открывая 1С.
Дальше выясняется, что база файловая. У нее нет ни адреса, по которому обратиться снаружи, ни веб-сервера, ни службы, которая работает без человека. Есть 1С на конкретном компьютере, которую вечером выключают вместе с ним.
Как это решают обычно
Опубликовать файловую базу на веб-сервере. Технически возможно: ставится IIS или Apache, база публикуется, поднимается HTTP-сервис. На практике для файловой базы это тяжелый путь: нужен постоянно работающий компьютер, белый IP или туннель, сертификат, и все это ради одного бота.
COM-соединение. Бот или промежуточный скрипт подключается к базе через внешнее соединение. Работает, пока бот стоит на той же машине, что и база. Переезд базы, обновление платформы или разрядность компонента - и связь рассыпается.
Выгрузка файлами. Обработка по расписанию кладет остатки в файл, бот читает его. Просто и живет долго, но данные всегда вчерашние, а на вопрос, которого не было в выгрузке, бот ответить не сможет.
Туннель наружу. Проброс через готовый сервис туннелей. Быстро поднимается, но это именно то, чего обычно и пытались избежать: база становится доступна из интернета, и отвечать за это придется вам.
Как быстрее
Обработка открывается в той же 1С, где работает бухгалтер, и сама обращается к сервису по исходящему HTTPS: есть ли задание. Задание приходит от вашего бота, выполняется внутри базы и возвращается ответом. Публиковать базу, ставить веб-сервер и открывать порты не нужно.
Бот при этом остается обычным ботом: он делает HTTP-запрос к сервису с ключом в заголовке и получает JSON. Никакой специфики 1С на его стороне нет.
| Номенклатура | Склад | Остаток | Цена |
|---|---|---|---|
| Профиль 40х20 | Основной | 320 | 195 |
| Саморез 4.2х16 | Основной | 18 400 | 1 |
| Грунтовка 10 л | Дальний | 0 | 890 |
Как это сделать
1. Зарегистрируйтесь в кабинете, получите ключ, скачайте обработку под свою платформу.
2. Откройте обработку в 1С, вставьте ключ, нажмите старт. Пока окно открыто, база на связи.
3. В боте обращайтесь к API сервиса с этим ключом. Запрос пишется на языке запросов 1С, отбор задаете вы.
4. Боту выдайте отдельный ключ: его можно выключить или перевыпустить, не трогая ключ базы.
Что стоит знать заранее
Главное ограничение файловой базы никуда не девается: пока 1С не запущена, данных нет. Сервис честно ответит боту, что база не на связи, а не выдумает цифры. Если бот нужен круглосуточно, обмен ставят на компьютере, который не выключают, или переводят базу в клиент-серверный вариант.
Запросы к базе выполняются по очереди, по одному. Для бота это обычно незаметно, но тяжелый свод по всей номенклатуре займет базу на минуты - лучше отбор и ограничение строк.
Права у обработки те же, что у пользователя 1С, под которым она запущена. Для бота разумно завести отдельного пользователя с доступом только к нужным данным.
Не уверены, как подключается именно ваша база - в 1С:Фреш, в аренде, своя серверная или файловая? Выберите свой случай на главной: покажем, что мешает и что меняет мост.