Универсальный телеграм-бот для 1С. Будет работать с любой конфигурацией на управляемых формах на базе БСП (библиотека стандартных подсистем). От БСП требуется только наличие справочника «Дополнительные отчеты и обработки».
Возможности бота:
- Отправка произвольных текстовых ответов на запрос пользователя,
- Отправка файлов по запросу пользователя,
- Прием файлов от пользователя и сохранение их на диск,
- Ручная отправка произвольного сообщения или файла прямо из 1С в телеграм,
- Доступна работа с несколькими ботами.
При описании бота будут использоваться следующие понятия:
Бот – это программа, работающая через мессенджер Телеграм. Работает по принципу вопрос – ответ. Например, мы ему «Сколько дней отпуска у нас осталось», а он нам в ответ количество оставшихся дней отпуска. Или мы ему «На сколько мы продали вчера», а он нам в ответ отчет по продажам. Ключевой момент в том, что для работы бота не требуется вмешательство пользователя.
Пользователи бота – так как бот может работать с конфиденциальными данными, то нам не хотелось бы, чтобы к ним имел доступ любой желающий. Для этого можно ограничить список пользователей, имеющих доступ к боту. Тогда только они смогут получать ответы от бота, а все остальные будут получать сообщение о нарушении прав доступа.
Команды бота – это конкретные действия бота. Например, если боту пришло сообщение «продажи», то он в ответ должен выслать отчет по продажам. Или если пришло сообщение «инфо», то он в ответ отправляет текстовое описание организации с контактными данными и т.п. Все команды настраиваются вами самостоятельно.
Создание бота в телеграм
Чтобы создать бота в телеграм, нужно выполнить следующие шаги:
- Найти в телеграм отца всех ботов - BotFather

2. Запустить его и отправить команду /newbot

3. Ввести произвольное имя бота:

4. Теперь нужно ввести username бота (техническое имя бота). Оно обязательно должно быть только на латинице и заканчиваться на bot, например super_mega_3s_bot

5. Бот создан. Нужно скопировать токен из последнего сообщения, он будет использоваться при настройке бота в 1С.
Запуск бота
Сначала нужно подключить внешнюю обработку в 1С.
После подключения будет доступно 2 варианта работы бота:
- автоматическое выполнение,
- ручное управление.

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

В поле «Период обновления» нужно указать время в секундах, через которое бот будет обращаться к серверу телеграм для получения новых сообщений.
Если закрыть форму, то выполнение бота будет остановлено. Также можно выключить бота, нажав на кнопку «Остановить бота».
Не нужно одновременно запускать бота и через регламентное задание и через открытую форму, иначе пользователи могут дважды получать ответы на свои команды.
Также не нужно несколько раз запускать обработку в одной информационной базе.
И не нужно добавлять одного бота в разные информационные базы.
Настройки ботов хранятся в служебных элементах справочника «Дополнительные отчеты и обработки». Не нужно их удалять.
Обработка команд бота выполняется по следующему алгоритму:
- Через заданные промежутки времени (период обновления для ручного управления и расписание регламентного задания для автоматического) бот выполняет запрос на сервер телеграмм (api.telegram.org) для получения новых сообщений.
- Выполняется обработка полученных сообщений в соответствии с настроенными командами бота (отправляются ответы на команды пользователей). Если используется несколько ботов, то они обрабатываются последовательно.
Запросы к телеграм выполняются на сервере 1С, поэтому на компьютере сервера 1С должен быть доступ в интернет.
Также доступно разовое выполнение бота. Для этого нужно в меню выбрать «Еще – Выполнить сейчас».

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

Добавление бота в 1С
Для добавления бота в 1С нужно в главном окне бота нажать на кнопку «Боты». Данная кнопка доступна только для пользователей с полными правами.

В результате будет открыт список всех ботов.

Затем нужно нажать на кнопку «Добавить» и ввести имя и токен. Имя произвольное, но в дальнейшем его нельзя будет изменить. Токен нужно скопировать из последнего сообщения от BotFather.

Затем нужно нажать ОК – и бот будет добавлен в 1С.
Для удаления бота из 1С нужно нажать на кнопку «Удалить». Будет удалена только настройка бота в 1С, сам бот в телеграм останется.
Чтобы временно отключить бота, можно очистить у него токен.
Можно добавить неограниченное количество ботов, но нужно учитывать, что все боты обрабатываются последовательно, что может занять продолжительное время, в результате чего увеличится время ответа на команду. Если у вас много ботов, то лучше разнесите их по разным информационным базам 1С, тогда они будут выполняться параллельно.
Пользователи бота
Чтобы пользователи могли работать с ботом они должны найти его в телеграмм и запустить, нажав кнопку «Запустить». Затем нужно отправить любое сообщение. После этого пользователь будет добавлен в список новых пользователей бота. Такие пользователи пока не могут работать с ботом, это только кандидаты на доступ к нему.
Чтобы дать право на работу с ботом, необходимо в списке ботов выделить нужного бота и нажать на кнопку «Пользователи».

Будет открыто окно с пользователями бота.

В верхнем списке будут пользователи-кандидаты на доступ к боту.
Если пользователю нужно предоставить доступ, то нужно выделить его и нажать на кнопку «Разрешить». Пользователь будет перенесен в нижний список. Это список пользователей, у кого есть доступ к боту.
Кнопка «Удалить» удаляет пользователя из списка кандидатов, без предоставления прав. Чтобы пользователь снова появился в этом списке нужно еще раз отправить боту любое сообщение.
Чтобы запретить пользователю работать с ботом, нужно выделить его в нижнем списке пользователей и нажать на кнопку «Запретить». Пользователь будет удален из списка разрешенных пользователей.
В поле «Сообщение о нарушении прав доступа» нужно указать сообщение, которое будет отправлено пользователю, если у него нет прав доступа к боту. По умолчанию используется сообщение «Нарушение прав доступа».
Если установить галочку «Без ограничений», то проверка прав доступа не будет выполняться. Любой желающий сможет работать с ботом.
Для того чтобы новый пользователь появился в списке кандидатов, нужно чтобы бот был запущен. Если пользователь не появляется в списке кандидатов, то закройте окно с пользователями, дождитесь пока выполнится очередной запрос к телеграм и после этого откройте список пользователей. Если все равно не появляется, то отправьте боту еще одно сообщение и повторите действия выше.
Команды бота
Для настройки команд бота нужно выделить бота и нажать на кнопку «Команды».

Будет открыт список команд бота.

Команда состоит из собственно команды и параметра команды. Все что идет до первого пробела в текстовом сообщении считается командой. После пробела – параметром команды.
Например, если отправить боту сообщение «отчет Продажи», то «отчет» будет командой, а «Продажи» - параметром команды.
В списке команд нужно заполнить следующие колонки:
Команда – команда, которую пользователь должен отправить боту.
Тип – тип команды. На данный момент доступно 2 типа:
- Текст – это произвольное текстовое сообщение, которое будет отправлено в ответ на команду.
- Файл – здесь нужно указать каталог, в котором хранятся файлы. Имя файла пользователь должен будет указать после команды, через пробел. В результате пользователю будет отправлен этот файл.
Для заполнения настроек команды нажмите на 3 точки в колонке «Настройки».

Если установлена галочка «Отправлять список файлов если не указан параметр», то если пользователь отправит только команду, ему в ответ будет выслан список всех файлов в виде клавиатуры.
Если в каталоге только один файл и установлена галочка «Отправлять список файлов, если не указан параметр», то, если с командой не было указано имя файла, то пользователю сразу будет отправлен этот файл.
В верхней части можно указать «Сообщение о неправильной команде». Это то сообщение, которое будет отправлено пользователю, если он отправит несуществующую команду.
Если заполнено поле «Каталог для загружаемых файлов», то пользователи смогут отправлять файлы боту. Эти файлы будут помещены в указанный каталог на диске. Для каждого пользователя будет создан свой подкаталог с именем ФИО(Логин). Например, для пользователя Иванов с логином Ivanov подкаталог будет называться Иванов(Ivanov). Если в этом каталоге уже будет файл с таким именем, то в конце имени файла будет добавлена цифра 2, 3 и т.д., старый файл не будет перезаписан.
Стоит учитывать, что вся работа с файлами выполняется на сервере 1С, следовательно в качестве каталогов для хранения файлов нужно указать доступный серверу 1С каталог.
Отправка произвольного сообщения
Нажав на кнопку «Сообщение» в главном окне бота можно отправить произвольное сообщение или файл пользователю.

В открывшемся окне нужно выбрать бота, пользователя и либо ввести сообщение, либо выбрать файл. Можно сразу и сообщение и файл. Нажав на кнопку «Отправить» сообщение и/или файл будут отправлены пользователю в телеграм.

Пример работы с ботом
Рассмотрим на примере работу с ботом.
Например, нужно настроить бота предоставляющего различные отчеты для руководства. Предположим, что отчеты создаются вручную в Excel и затем размещаются в каталоге «f:\Отчеты для руководства».
Сначала нужно добавить нового бота и попросить всех отправить ему любое сообщение.
Затем в списке пользователей открыть доступ для них (перенести их в список разрешенных пользователей).
Теперь нужно добавить команду с типом Файл. В настройках команды нужно указать путь к каталогу с отчетами, а также установить галку «Отправлять список файлов, если не указан параметр». Команду назовем отчеты.

Теперь если отправить боту команду отчеты, то в ответ будет получен список всех доступных отчетов. Нажав на нужную кнопку, пользователь получит файл с отчетом.

Также можно сразу после команды отчеты указать имя требуемого отчета.

Теперь добавим команду для получения отчета по остаткам. Для этого добавим на диске каталог «F:\Отчет по остаткам» и добавим в него только один отчет.
Добавим команду остатки, тип = Файл, в настройках укажем каталог с отчетом и установим галку «Отправлять список файлов, если не указан параметр».

Теперь достаточно отправить боту команду остатки и в ответ сразу будет получен отчет по остаткам. Так происходит, потому что в каталоге только 1 файл.

Для автоматического формирования отчетов можно использовать функционал типовых конфигураций «Рассылка отчетов» с типом доставки «В сетевой каталог».

Добавим еще одну команду с описанием всех команд бота. Тип команды = Текст, в текстовом поле опишем все команды бота.

Отправив боту команду help, в отчет получим описание всех команд:

Добавим возможность загрузки файлов через телеграм. Для этого в списке команд заполним поле «Каталог для загружаемых файлов»:

Отправим через телеграм файл боту от пользователя Иванов, в результате файл будет записан на диск в подкаталог Иванов(Ivanov).