Это продолжение статьи "Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram" [1]
Ниже описание процедуры, которая сформирует отчет [2] "Задачи" и отправит результат в формате "xlsx" пользователю в Telegram [3]
Процедура Выполнитьотчет [2](chat_id) Таб = Новый ТабличныйДокумент; Отчеты.Задачи.Создать().СкомпоноватьРезультат(Таб); ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); Таб.Записать(ИмяФайла); СтрокаСоединения = "/bot" + Объект.Токен + "/sendDocument"; Boundary = "----"+Строка(Новый УникальныйИдентификатор()); //Определяем массив для процедуры ОбъединитьФайлы МассивФайловДляОбъединения = Новый Массив; //Формируем начальный фрагмент файла POST-запроса ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt"); ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8); //Формируем конечный фрагмент файла POST-запроса ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt"); ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8); ТекстДляОтправки = ""; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename=""report.xlsx""" + Символы.ПС; ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки ); ФайлОтправкиНачало.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); МассивФайловДляОбъединения.Добавить(СокрЛП(ИмяФайла)); ТекстДляОтправки = "" + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--"; ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки); ФайлаОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt"); ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки); HTTPЗапрос = Новый HTTPЗапрос; Заголовки = Новый Соответствие; HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary); HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки); HTTPЗапрос.АдресРесурса = СтрокаСоединения; ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows); HTTPСоединение = Новый HTTPСоединение(Объект.Сервер,,,,,, ЗащищенноеСоединение); Попытка ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Исключение Сообщить("Ошибка выполенния запроса!"); КонецПопытки; КонецПроцедуры
Ссылки
[1] https://www.mykib.org/article/primer-svyazi-1s-i-messendzhera-telegram-poluchenie-dannyh-iz-1s-zaprosom-iz-telegram
[2] https://www.mykib.org/article/den-devyatyy-integriroval-samyy-bolshoy-katalog-razrabotok-dlya-platformy-1s
[3] http://mykib.org/article/integraciya-1s-s-messendzherom-telegram-dlya-lyuboy-konfiguracii#overlay-context=article/integraciya-1s-s-messendzherom-telegram-dlya-lyuboy-konfiguracii
[4] https://www.mykib.org/tags/1s-8
[5] https://www.mykib.org/tags/telegram