|   |   | 
| 
 | Отправка файла из 1с в Telegram | ☑ | ||
|---|---|---|---|---|
| 0
    
        MAPATNK2 naïve 16.08.16✎ 15:17 | 
        Всем привет. Сие проблема застала меня: Осуществляю передачу отчета с помощью бота через telegram. отчет формируется, файлик отправляется, а на другом конце принимается, вот только при сохранении файла Excel выдает, что либо кодировка проблемна, либо файл поврежден. И при открытии получаю белеберду с нулями, единицами и непонятными символами))) Погмогите исправить прошу вас.     | |||
| 1
    
        MAPATNK2 naïve 16.08.16✎ 15:17 | 
        Процедура КнопкаВыполнитьНажатие(Кнопка)
 Токен = "249415403:AAHhyU59bNN2Xq9yjkmiuRWoVVOV9oUI_zQ"; chat_id = "260329199"; Таб = Новый ТабличныйДокумент; Отчеты.Отчет2.Создать().СкомпоноватьРезультат(Таб); ИмяФайла = ПолучитьИмяВременногоФайла("xls"); Таб.Записать(ИмяФайла); СтрокаСоединения = "/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.xls""" + Символы.ПС; ТекстДляОтправки = ПереобразоватьЮникод(ТекстДляОтправки); ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки); ФайлОтправкиНачало.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); МассивФайловДляОбъединения.Добавить(СокрЛП(ИмяФайла)); ТекстДляОтправки = "" + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--"; ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки); ФайлаОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt"); ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки); HTTPЗапрос = Новый HTTPЗапрос; Заголовки = Новый Соответствие; HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary); HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки); HTTPЗапрос.АдресРесурса = СтрокаСоединения; ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows); HTTPСоединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Попытка ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Исключение Сообщить("Ошибка выполенния запроса!"); КонецПопытки; КонецПроцедуры | |||
| 2
    
        Garykom гуру 16.08.16✎ 15:24 | 
        Попробуй отчет в архив засовывать перед отправкой и уже архивом отправлять     | |||
| 3
    
        MAPATNK2 naïve 16.08.16✎ 15:25 | 
        (2) А как это осуществить?     | |||
| 4
    
        Garykom гуру 16.08.16✎ 15:26 | 
        Продам СП, дорого     | |||
| 5
    
        MAPATNK2 naïve 16.08.16✎ 15:26 | 
        (2) Но все же, мне это мало чем поможет. На большинстве устройств нет архиваторов.     | |||
| 6
    
        Garykom гуру 16.08.16✎ 15:28 | 
        (5) Угу а открывалка формата екселя на этих устройствах откуда взялась?     | |||
| 7
    
        Garykom гуру 16.08.16✎ 15:30 | 
        Тьфу у тя отправка по http кривая в дупель     | |||
| 8
    
        MAPATNK2 naïve 16.08.16✎ 15:41 | 
        (7) Все отправляется нормально. Я спросил про шрифт. В чем проблема?     | |||
| 9
    
        Garykom гуру 16.08.16✎ 15:50 | 
        Идут стрельбы.
 Дали автоматы, патроны, показали куда стрелять. Админ отстрелялся, подводят итоги. Мишень админа чистая. Командир: - ??????!!!!!.. Админ, проверяя автомат: - С моей стороны пули вылетели. Проблемы у вас... | |||
| 10
    
        Garykom гуру 16.08.16✎ 15:52 | 
        Все люди делятся на 10 категорий: на тех, кто понимает двоичную систему счисления и на тех, кто её не понимает.     | |||
| 11
    
        MAPATNK2 naïve 16.08.16✎ 15:57 | 
        (10) Молодец, развлекайся тут)     | |||
| 12
    
        MM 16.08.16✎ 16:16 | 
        В Таб.Записать(ИмяФайла) - сохранение происходит в MXL     | |||
| 13
    
        MAPATNK2 naïve 17.08.16✎ 11:40 | 
        (12) А как изменить этот формат, чтобы читабильно в EXCEL было?     | |||
| 14
    
        opera199 17.08.16✎ 11:50 | 
        В эксель через ком-объекты сохраняется.     | |||
| 15
    
        Serginio1 17.08.16✎ 11:53 | 
        ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);                 
 Да а multipart/form-data проще отправлять http://catalog.mista.ru/public/466052/ // Вариант отправки двоичных данных из файла но более краткий ПотокФайла2 =Врап.ПолучитьТип("System.IO.File").OpenRead(ИмяФайла); ФайловыйКонтент2 =Врап.СоздатьОбъект("System.Net.Http.StreamContent",ПотокФайла2); Контент.Add(ФайловыйКонтент2,"attachment","TestXml"); requestUri = "api/values/SendFiles"; Результат = Клиент.PostAsync(requestUri, Контент).Result; стр = Результат.Content.ReadAsStringAsync().Result; | |||
| 16
    
        MAPATNK2 naïve 17.08.16✎ 12:51 | 
        (15) Не помогло     | |||
| 17
    
        MAPATNK2 naïve 17.08.16✎ 12:56 | 
        Сделал так, все работает отлично. Если есть недочеты, скажите пожалуйста.
 Процедура КнопкаВыполнитьНажатие(Кнопка) Токен = "249415403:AAHhyU59bNN2Xq9yjkmiuRWoVVOV9oUI_zQ"; chat_id = "260329199"; Таб = Новый ТабличныйДокумент; Отчеты.Отчет2.Создать().СкомпоноватьРезультат(Таб); ИмяФайла = ПолучитьИмяВременногоФайла("xlsx"); Таб.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX); СтрокаСоединения = "/bot" + Токен + "/sendDocument"; Boundary = "----"+Строка(Новый УникальныйИдентификатор()); //Определяем массив для процедуры ОбъединитьФайлы МассивФайловДляОбъединения = Новый Массив; //Формируем начальный фрагмент файла POST-запроса ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("xlsx"); ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8); //Формируем конечный фрагмент файла POST-запроса ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("xlsx"); ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8); ТекстДляОтправки = ""; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename=""report.xlsx""" + Символы.ПС; ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки); ФайлОтправкиНачало.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало); МассивФайловДляОбъединения.Добавить(СокрЛП(ИмяФайла)); ТекстДляОтправки = "" + Символы.ПС; ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--"; ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки); ФайлаОтправкиКонец.Закрыть(); МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("xlsx"); ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки); HTTPЗапрос = Новый HTTPЗапрос; Заголовки = Новый Соответствие; HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary); HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаОтправки); HTTPЗапрос.АдресРесурса = СтрокаСоединения; ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows); HTTPСоединение = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL()); Попытка ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Исключение Сообщить("Ошибка выполенния запроса!"); КонецПопытки; КонецПроцедуры | |||
| 18
    
        MAPATNK2 naïve 17.08.16✎ 12:57 | 
        (15) Спасибо большое. Может вы знаете есть ли где примеры по работе с Telegram? Нужно чтобы пользователи отправляли боту сообщения, а 1с-ка сохраняла эти сообщения в документ.??     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |