Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 15:32

отправка файла в ТГ

Автор Nosferatu112, 16 сен 2024, 16:43

0 Пользователей и 1 гость просматривают эту тему.

Nosferatu112

Всех приветствую, отправляю в ТГ, Excel файл, отправляется нормально но при попытке открытия выдаёт в книге обнаружено содержимое которое не удалось прочитать, что я делаю не так? как отправлять файл цельным так сказать?
ТабДок = ОтправитьВТелеграмНаСервереНеРабочиеДни();
ТабДок.Показать();
ТабДокР = ОтправитьВТелеграмНаСервереРабочиеДни();
ТабДокР.Показать();

ОднаКнига = Новый ПакетОтображаемыхДокументов;
Элем = ОднаКнига.Состав.Добавить();
Элем.Данные = ПоместитьВоВременноеХранилище(ТабДок);
Элем = ОднаКнига.Состав.Добавить();
Элем.Данные = ПоместитьВоВременноеХранилище(ТабДокР);

ИмяФайла = "Водители " + Формат(Объект.ДатаВыезда,"ДФ=dd.MM.yyyy") + ".xlsx";

Каталог = КаталогВременныхФайлов();

ПутьКФайлу = Каталог + ИмяФайла;
ОднаКнига.Записать(ПутьКФайлу, ТипФайлаПакетаОтображаемыхДокументов.XLSX);

ФайлОтправки = Новый Файл(ПутьКФайлу);

    Ключ = ОтправкаВТелеграм();
СтрокаСоединения = "/bot" + Ключ + "/sendDocument";
       
    Boundary = "----"+Строка(Новый УникальныйИдентификатор());
   
    МассивФайловДляОбъединения = Новый Массив;
   
    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("xlsx");
    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
   
    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("xlsx");
    ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8);
   
    ТекстДляОтправки = "";
   
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;   
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС;   
    ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС;
   
    ТекстДляОтправки = ТекстДляОтправки + "--" + Boundary + Символы.ПС;   
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename=" + ИмяФайла + Символы.ПС;   
   
    ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлОтправкиНачало.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
   
    МассивФайловДляОбъединения.Добавить(СокрЛП(ПутьКФайлу));
   
    ТекстДляОтправки = "" + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "--" + Boundary + "--";
    ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлаОтправкиКонец.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);
   
   
    ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("xlsx");
    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
   
    HTTPЗапрос = Новый HTTPЗапрос;
    Заголовки = Новый Соответствие;
   
    HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type","multipart/form-data boundary=" + Boundary);
   
    HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки);
//HTTPЗапрос.УстановитьТелоИзДвоичныхДанных();
    HTTPЗапрос.АдресРесурса = СтрокаСоединения;
   
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
    HTTPСоединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
   
    Попытка
        ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

УдалитьФайлы(Каталог,ИмяФайла);

Nosferatu112

Nosferatu112, Поправка, файл окткрывается если нажать "ДА" восстановить, и в следующей ошибке нажать нет не переходить на сайт и все данные верны, там 2 таблицы на 2ух листах, вот как правильно отправлять что бы файл открылся сразу, без ошибок, может я где в заголовках накосячил?

Максим75

Nosferatu112, ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС;
chat_id чему равно? может и есть, я просто не увидел.

Nosferatu112

Максим75, там id рабочего канала, -10014.... и.т.д

Nosferatu112

Максим75, -1002450253452 это ID моего тест канала в ТГ

Максим75

Nosferatu112, я просто нашел на просторах подобный код, там просто chat_id некая текстовая (именно текстовая) константа, состоящая из чисел.
поэтому и спросил.

и еще имя самого файла на аглицком и без пробелов в имени, может здесь еще будет вопрос.

Nosferatu112

Максим75, я вообще нашел такую штуку типо к моему когу нужно прикрутить это и файл будет открыватся нормально, но я не одупляю как это прикрутить к моему коду как бы не старался с этим кодом возвращается ошибка код 400


&НаКлиенте
Функция СоздатьСообщение(ИмяФайла,ДвоичныеДанные) Экспорт

Файл = СоздатьСообщение_Изображение("Document", ИмяФайла, ДвоичныеДанные);

// Сформировать основное составное сообщение.

Разделитель = "----"+Строка(Новый УникальныйИдентификатор());



Результат = Новый Структура();

Заголовки = Новый Соответствие();



Результат.Вставить("Заголовки", заголовки);

Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Разделитель);



Тело = Новый ПотокВПамяти();

ЗаписьДанных = Новый ЗаписьДанных(Тело);



ЗаписьДанных.ЗаписатьСтроку("==" + Разделитель);
ЗаписьДанных.Записать(Файл);

ЗаписьДанных.ЗаписатьСтроку("==" + Разделитель + "==");



ЗаписьДанных.Закрыть();



ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();



Результат.Вставить("Тело", ДанныеТела);



Возврат Результат;

 

КонецФункции

&НаКлиенте
Функция СоздатьСообщение_Изображение(ИмяСообщения, ИмяФайла, ДвоичныеДанные)

 

Поток = Новый ПотокВПамяти();

ЗаписьДанных = Новый ЗаписьДанных(Поток);

// Записать заголовки.

ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + ИмяСообщения + "; filename=" + ИмяФайла);

ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

ЗаписьДанных.ЗаписатьСтроку("");

// Записать тело.

ЗаписьДанных.Записать(ДвоичныеДанные);



ЗаписьДанных.Закрыть();



Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();

 

КонецФункции

Nosferatu112

Nosferatu112, Такая проблема только с excel файлами все остальные открываются нормально txt, pdf

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск