Получение отчета из 1C запросом в Telegram (отправка ботом файла Excel)

Аватар пользователя mykib.org

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram. Получение отчета из 1C запросом в Telegram (отправка ботом файла Excel)

Это продолжение статьи "Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram"

Ниже описание процедуры, которая сформирует отчет "Задачи" и отправит результат в формате "xlsx" пользователю в Telegram

Процедура Выполнитьотчет(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Запрос);
	Исключение
		Сообщить("Ошибка выполенния запроса!");
	КонецПопытки;
КонецПроцедуры

Ключевые фразы: