&НаСервере
Процедура
ОтправитьФайл(Токен, ChatId, ДвоичныеДанные, ИмяФайла,
Сообщение)
Разделитель = Строка(Новый УникальныйИдентификатор());
// Формируем основное составное сообщение
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело,
КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Истина);
// chat_id
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""chat_id""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку(ChatId);
// disable_notification
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""disable_notification""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("True");
Если Не ПустаяСтрока(Сообщение)
Тогда
// caption
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data;
name=""caption""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку(Сообщение);
// parse_mode
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""parse_mode""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("HTML");
КонецЕсли;
//document
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""document""; filename=" + ИмяФайла + "");
ЗаписьДанных.ЗаписатьСтроку("");
// Добавим файл
ЗаписьДанных.Записать(ДвоичныеДанные);
// Завершение записи
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель
+ "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
// Сформировать соединение и запрос
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,15,Новый
ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type",
"multipart/form-data;
boundary=" + Разделитель);
Заголовки.Вставить("Accept",
"*/*");
Заголовки.Вставить("Cache-Control",
"no-cache");
Заголовки.Вставить("Host",
"api.telegram.org");
Заголовки.Вставить("Accept-Encoding",
"gzip, deflate");
Заголовки.Вставить("Content-Length", Формат(ДанныеТела.Размер(), "ЧДЦ=0; ЧН=0; ЧГ=0"));
Заголовки.Вставить("Connection",
"close");
Адрес = СтрШаблон("/bot%1/sendDocument", Токен);
Запрос = Новый HTTPЗапрос(Адрес,
Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
// POST
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Разбор ответа
Если Ответ.КодСостояния
<> 200 Тогда
ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ВызватьИсключение
СтрШаблон("Ошибка отправки вложения в телеграм.
|Код
состояния: %1
|Тело:
%2"
, Ответ.КодСостояния
, ОтветСтрокой
);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СоздатьОтчетИПоместитьВТабДок()
ТабДок =
Новый ТабличныйДокумент();
СКД=Отчеты.ОтчетПоЗаявкам.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки=СКД.НастройкиПоУмолчанию;
Параметр1 = Настройки.ПараметрыДанных.Элементы.Найти("НачалоДня");
Параметр1.Значение = НачалоДня(ТекущаяДата());
Параметр1.Использование = Истина;
Параметр2 = Настройки.ПараметрыДанных.Элементы.Найти("КонецДня");
Параметр2.Значение = КонецДня(ТекущаяДата());
Параметр2.Использование = Истина;
Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета
= Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные
расшифровки
МакетКомпоновки
= КомпоновщикМакета.Выполнить(СКД, Настройки,
Расшифровка);
ВнешниеПараметры
= Новый Структура;
//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных
= Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеПараметры,
Расшифровка);
//Выводим результат в табличный документ
ПроцессорВывода
= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура
ОтправитьФайлВТелеграм(Команда)
ИмяФайла
= ПолучитьИмяВременногоФайла("xlsx");
ТабДок =
СоздатьОтчетИПоместитьВТабДок();
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
ДД
= Новый ДвоичныеДанные(ИмяФайла);
ТекстСообщ
= "Отчет по заявкам";
ОтправитьФайл("1234567:abcdef", "-1234567", ДД, ИмяФайла, ТекстСообщ);
УдалитьФайлы(ИмяФайла);
КонецПроцедуры
|