1С 8.3 Отправка Табличного документа в Телеграм
Данные > Примеры кода 1С > 1С 8.3 Telegram
Перейти в раздел примеры кода 1С 8.3:
Источник: https://gist.github.com/PlugFox/5f62e43c56941e4c5a244de2422ee7f8
Перем Токен, ИдентификаторПолучателя; // Телеграм
Перем ПроксиПротокол, ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль; // Прокси
Процедура ОтправитьТаблДокументВТелеграм(ТабличныйДокумент, ИмяФайла = "", Сообщение = "")
// Глобальные переменные в процедуре:
// + Токен
// + ИдентификаторПолучателя
// Сформировать тело запроса
Разделитель = Строка(Новый УникальныйИдентификатор());
// Формируем основное составное сообщение
Тело = Новый ПотокВПамяти();
Данные = Новый ЗаписьДанных(Тело, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Истина);
// chat_id
Данные.ЗаписатьСтроку("--" + Разделитель);
Данные.ЗаписатьСтроку("Content-Disposition: form-data; name=""chat_id""");
Данные.ЗаписатьСтроку("");
Данные.ЗаписатьСтроку(ИдентификаторПолучателя);
// 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=""%1.pdf""", ?(ПустаяСтрока(ИмяФайла), "document_" + Строка(Новый УникальныйИдентификатор()), ИмяФайла)));
Данные.ЗаписатьСтроку("Content-Type: application/pdf");
Данные.ЗаписатьСтроку("");
Данные.Закрыть();
// Добавим файл
ТабличныйДокумент.Записать(Тело, ТипФайлаТабличногоДокумента.PDF);
// Завершение записи
Данные = Новый ЗаписьДанных(Тело, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Ложь);
Данные.ЗаписатьСтроку("");
Данные.ЗаписатьСтроку("--" + Разделитель + "--");
Данные.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
// Сформировать соединение и запрос
СоединениеHTTP = ПолучитьСоединениеHTTP();
Заголовок = Новый Соответствие;
Заголовок.Вставить("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");
АдресURL = СтрШаблон("/bot%1/sendDocument", Токен);
Запрос = Новый HTTPЗапрос(АдресURL , Заголовок);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
// POST
Ответ = СоединениеHTTP.ОтправитьДляОбработки(Запрос);
// Разбор ответа
Если Ответ.КодСостояния <> 200 Тогда
ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ВызватьИсключение СтрШаблон("Ошибка отправки вложения в телеграм.
|Код состояния: %1
|Тело: %2"
, Ответ.КодСостояния
, ОтветСтрокой
);
КонецЕсли;
КонецПроцедуры // ОтправитьТабличныйДокументВТелеграм()
//************************************************************
Функция ПолучитьСоединениеHTTP()
// Глобальные переменные в процедуре:
// + ПроксиПротокол
// + ПроксиСервер
// + ПроксиПорт
// + ПроксиПользователь
// + ПроксиПароль
Прокси = Новый ИнтернетПрокси(Истина);
Если ТипЗнч(ПроксиПротокол) = Тип("Строка") И Не ПустаяСтрока(ПроксиПротокол) Тогда
Прокси.Установить(ПроксиПротокол, ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль, Ложь);
КонецЕсли;
ЗащищенноеСоединениеHTTP = Новый ЗащищенноеСоединениеHTTPOpenSSL();
СоединениеHTTP = Новый HTTPСоединениеHTTP("api.telegram.org", 443,,, Прокси, 30, ЗащищенноеСоединениеHTTP, Ложь);
Возврат СоединениеHTTP;
КонецФункции // ПолучитьСоединениеHTTP()
// ТЕЛЕГРАМ +
Токен = ""; // 000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ИдентификаторПолучателя = ""; // -000000000
// ТЕЛЕГРАМ -
// ПРОКСИ +
ПроксиПротокол = "https"; // для socks5 - https
ПроксиСервер = "socks5://0.0.0.0"; // socks5://domain.tld
ПроксиПорт = 1080; // 1080
ПроксиПользователь = ""; // user
ПроксиПароль = ""; // password
// ПРОКСИ -
Перем ПроксиПротокол, ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль; // Прокси
Процедура ОтправитьТаблДокументВТелеграм(ТабличныйДокумент, ИмяФайла = "", Сообщение = "")
// Глобальные переменные в процедуре:
// + Токен
// + ИдентификаторПолучателя
// Сформировать тело запроса
Разделитель = Строка(Новый УникальныйИдентификатор());
// Формируем основное составное сообщение
Тело = Новый ПотокВПамяти();
Данные = Новый ЗаписьДанных(Тело, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Истина);
// chat_id
Данные.ЗаписатьСтроку("--" + Разделитель);
Данные.ЗаписатьСтроку("Content-Disposition: form-data; name=""chat_id""");
Данные.ЗаписатьСтроку("");
Данные.ЗаписатьСтроку(ИдентификаторПолучателя);
// 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=""%1.pdf""", ?(ПустаяСтрока(ИмяФайла), "document_" + Строка(Новый УникальныйИдентификатор()), ИмяФайла)));
Данные.ЗаписатьСтроку("Content-Type: application/pdf");
Данные.ЗаписатьСтроку("");
Данные.Закрыть();
// Добавим файл
ТабличныйДокумент.Записать(Тело, ТипФайлаТабличногоДокумента.PDF);
// Завершение записи
Данные = Новый ЗаписьДанных(Тело, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Ложь);
Данные.ЗаписатьСтроку("");
Данные.ЗаписатьСтроку("--" + Разделитель + "--");
Данные.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
// Сформировать соединение и запрос
СоединениеHTTP = ПолучитьСоединениеHTTP();
Заголовок = Новый Соответствие;
Заголовок.Вставить("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");
АдресURL = СтрШаблон("/bot%1/sendDocument", Токен);
Запрос = Новый HTTPЗапрос(АдресURL , Заголовок);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
// POST
Ответ = СоединениеHTTP.ОтправитьДляОбработки(Запрос);
// Разбор ответа
Если Ответ.КодСостояния <> 200 Тогда
ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ВызватьИсключение СтрШаблон("Ошибка отправки вложения в телеграм.
|Код состояния: %1
|Тело: %2"
, Ответ.КодСостояния
, ОтветСтрокой
);
КонецЕсли;
КонецПроцедуры // ОтправитьТабличныйДокументВТелеграм()
//************************************************************
Функция ПолучитьСоединениеHTTP()
// Глобальные переменные в процедуре:
// + ПроксиПротокол
// + ПроксиСервер
// + ПроксиПорт
// + ПроксиПользователь
// + ПроксиПароль
Прокси = Новый ИнтернетПрокси(Истина);
Если ТипЗнч(ПроксиПротокол) = Тип("Строка") И Не ПустаяСтрока(ПроксиПротокол) Тогда
Прокси.Установить(ПроксиПротокол, ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль, Ложь);
КонецЕсли;
ЗащищенноеСоединениеHTTP = Новый ЗащищенноеСоединениеHTTPOpenSSL();
СоединениеHTTP = Новый HTTPСоединениеHTTP("api.telegram.org", 443,,, Прокси, 30, ЗащищенноеСоединениеHTTP, Ложь);
Возврат СоединениеHTTP;
КонецФункции // ПолучитьСоединениеHTTP()
// ТЕЛЕГРАМ +
Токен = ""; // 000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ИдентификаторПолучателя = ""; // -000000000
// ТЕЛЕГРАМ -
// ПРОКСИ +
ПроксиПротокол = "https"; // для socks5 - https
ПроксиСервер = "socks5://0.0.0.0"; // socks5://domain.tld
ПроксиПорт = 1080; // 1080
ПроксиПользователь = ""; // user
ПроксиПароль = ""; // password
// ПРОКСИ -
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник