Отправка и получение сообщений из 1С 7.7 в Telegram.
Обработка тестировалась на платформе 1С:Предприятие 7.7 для SQL (7.70.027)
Обработка выполняет следующие функции:
- отправляет из 1с 7.7 любой конфигурации от Телеграм-бота сообщения пользователю Телеграм по его id;
- получает от пользователей Телеграм сообщения Телеграм-боту в ручном и автоматическом режиме;
- получает от пользователей Телеграм команды из меню Телеграм-бота в ручном и автоматическом режиме и обрабатывает их.
Обработка проверена на ОС Windows7, Windows10 и использует её объект WinHttp.WinHttpRequest.5.1
Инструкция пользователя
1. Файлы из архива копируются в папку \ExtForms базы 1с, обработка запускается в Сервис-Дополнительные возможности-Отправка сообщений в Телеграм.
2. Для использования обработки требуется телеграм-бот(я его создавал с помощью бота @BotFather, про это есть много инфы в интернете).
После создания бота вам предоставится токен (ключ): 53ххххх351:AAGfi6vgххххххххххZOGAjI_rFCqGChVVc.
Этот токен надо записать в обработке кнопкой "Записать ТОКЕН".
Для проверки работоспособности обработки нажмите кнопку "Получить ИНФУ", в окно сообщений должно вывестись "{"ok":true,"result":"...).
Если появится сообщение "Ошибка поддержки безопасных каналов", установите флажок "Ошибка поддержки безопасных каналов" и повторно нажмите кнопку "Получить ИНФУ".
3. Получить id пользователя Телеграм можно следующим образом:
- на смартфоне пользователя в приложении Телеграм добавляется бот-телеграм через поиск по имени бота (телеграм отправит боту сообщение "/start")
- в 1с в обработке переключиться на закладку "Сообщения" и нажать кнопку "Прочитать новые сообщения". В таблице появится сообщение "/start" от пользователя.
- в 1с в обработке на закладке "Основная" в таблицу пользователей добавить нового пользователя (любой элемент любого справочника 1с) кнопкой "Добавить".
4. Для отправки сообщения из обработки выбираем нужного пользователя, пишем сообщение и нажимаем кнопку "Отправить сообщение".
5. Для автоматической отправки сообщений из любых обработок и отчетов в 1с используем:
Парам=СоздатьОбъект("СписокЗначений");
Парам.Установить("Получатель",Спр.ТекущийЭлемент()); //получатель (справочник) или список пользователей (список значений справочников)или ИД (строка) из таблицы пользователей
Парам.Установить("Сообщение","Отправлено из 1с"+РазделительСтрок+"Проверка");
ОткрытьФормуМодально("Обработка",Парам,КаталогИБ()+"\extforms\РаботаСТелеграм.ert");
Если Парам<>"" Тогда
Сообщить("Ошибка: "+Парам,"!");
Иначе
Сообщить("Сообщение отправлено");
КонецЕсли;
6. Для получения сообщений в 1с в обработке переключиться на закладку "Сообщения" и нажать кнопку "Прочитать новые сообщения".
Для авточтения сообщений обработкой установите флажок "читать сообщения каждые" и период в минутах (авточтение будет осуществляться пока открыт диалог обработки).
7. Для получения сообщений из любых обработок и отчетов в 1с используем:
Парам="прочитать сообщения";
ОткрытьФормуМодально("Обработка",Парам,КаталогИБ()+"\extforms\РаботаСТелеграм.ert");
Сообщить(""+Парам); //в парам: "нет новых сообщений" или "получили сообщений:х" или "ошибка ..."
8. Если существует файл ОбработкаСообщений.ert в папке Телеграм в каталоге ИБ, то после получения каждого сообщения модально запускается обработка ОбработкаСообщений.ert, где в Форма.Параметр доступен список значений с полученным сообщением.
Для отправки сообщения после выполнения обработки ОбработкаСообщений.ert запишите перед закрытием обработки в Форма.Параметр список значений с отправляемым сообщением.
ВНИМАНИЕ! ОбработкаСообщений.ert запускается модально, поэтому закрывайте её после выполнения автоматически и не используйте в ней предупреждения и вопросы.
образец модуля обработки ОбработкаСообщений.ert
//======================================================================
Процедура Сформировать(Парам)
ДатаС=Парам.Получить("ДатаСообщения");
ВремяС=Парам.Получить("ВремяСообщения");
ИД=Парам.Получить("ИдОтправителя");
Имя=Парам.Получить("ИмяОтправителя");
ИдЧата=Парам.Получить("ИдЧата");
Команда=Парам.Получить("Команда");
Сообщение=Парам.Получить("Сообщение");
//отправим ответ на сообщение
сзС=СоздатьОбъект("СписокЗначений");
сзС.Установить("Получатель",ИД); //получатель (справочник) или список пользователей (список значений справочников)или ИД (строка) из таблицы пользователей
сзС.Установить("Сообщение",""+Имя+"! Ваше сообщение от "+ДатаС+" "+ВремяС+" обработано.");
Форма.Параметр=сзС;
КонецПроцедуры
//======================================================================
Процедура ПриОткрытии()
Парам=Форма.Параметр;
Форма.Параметр="";
Если ТипЗначенияСтр(Парам)="СписокЗначений" Тогда
Сформировать(Парам);
КонецЕсли;
СтатусВозврата(0);
КонецПроцедуры // ПриОткрытии
9. С 15.02.2024 в обработку добавлена работа с меню команд у бота.
Для добавления команды в таблицу меню нажмите кнопку "Добавить" на закладке "Основная" обработки 1с.
Для выгрузки меню команд в телеграм нажмите кнопку "Сохранить".
Если для команды создать файл xxx.ert с внешней обработкой в папке Телеграм в каталоге ИБ, то после получения сообщения с этой командой модально запускается обработка xxx.ert, где в Форма.Параметр доступен список значений с полученным сообщением.
Для отправки сообщения после выполнения обработки xxx.ert запишите перед закрытием обработки в Форма.Параметр список значений с отправляемым сообщением.
ВНИМАНИЕ! xxx.ert запускается модально, поэтому закрывайте её после выполнения автоматически и не используйте в ней предупреждения и вопросы.
Образец модуля обработки xxx.ert смотри в п.8.