- Рефакторинг процедур общих модулей

This commit is contained in:
2025-05-21 12:41:12 +03:00
parent 91ef839c7f
commit bf54a89e2e
6 changed files with 78 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт Функция ВыполнитьGetЗапрос(Соединение, АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
РезультатЗапроса = Новый Структура(); РезультатЗапроса = Новый Структура();
РезультатЗапроса.Вставить("Успех", Ложь); РезультатЗапроса.Вставить("Успех", Ложь);
@@ -9,8 +9,6 @@
РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные); РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные);
Попытка Попытка
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Если Параметры <> Неопределено Тогда Если Параметры <> Неопределено Тогда
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры); АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
КонецЕсли; КонецЕсли;
@@ -49,7 +47,7 @@
КонецФункции КонецФункции
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт Функция ВыполнитьPostЗапрос(Соединение, АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
РезультатЗапроса = Новый Структура(); РезультатЗапроса = Новый Структура();
РезультатЗапроса.Вставить("Успех", Ложь); РезультатЗапроса.Вставить("Успех", Ложь);
@@ -57,8 +55,6 @@
РезультатЗапроса.Вставить("Описание", ""); РезультатЗапроса.Вставить("Описание", "");
Попытка Попытка
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Если Параметры <> Неопределено Тогда Если Параметры <> Неопределено Тогда
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры); АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
КонецЕсли; КонецЕсли;

View File

@@ -1,6 +1,6 @@
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
Функция SendMessage(ИдЧата, СообщениеДляОтправки, Клавиатура = Неопределено) Экспорт Функция SendMessage(ИдЧата, СообщениеДляОтправки, РежимРазметки = Неопределено, Клавиатура = Неопределено) Экспорт
ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки); ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки);
@@ -8,8 +8,15 @@
ТелоЗапроса.Вставить("reply_markup", Клавиатура); ТелоЗапроса.Вставить("reply_markup", Клавиатура);
КонецЕсли; КонецЕсли;
Если РежимРазметки <> Неопределено Тогда
Если РежимРазметки = Перечисления.ТелеграмРежимРазметки.HTML ИЛИ РежимРазметки = Перечисления.ТелеграмРежимРазметки.Markdown Тогда
ТелоЗапроса.Вставить("parse_mode", Строка(РежимРазметки));
КонецЕсли;
КонецЕсли;
АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage"); АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage");
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ТелоЗапроса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса,, ТелоЗапроса);
КонецФункции КонецФункции
@@ -17,21 +24,24 @@
ПараметрыЗапроса = Новый Структура("url", АдресВебхук); ПараметрыЗапроса = Новый Структура("url", АдресВебхук);
АдресРесурса = АдресРесурсаПоИмениМетода("setWebhook"); АдресРесурса = АдресРесурсаПоИмениМетода("setWebhook");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции КонецФункции
Функция DeleteWebhook() Экспорт Функция DeleteWebhook() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("deleteWebhook"); АдресРесурса = АдресРесурсаПоИмениМетода("deleteWebhook");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции КонецФункции
Функция GetWebhookInfo() Экспорт Функция GetWebhookInfo() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("getWebhookInfo"); АдресРесурса = АдресРесурсаПоИмениМетода("getWebhookInfo");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции КонецФункции
@@ -41,7 +51,8 @@
Формат(ТелеграмОбщегоНазначения.ИдПоследнегоСообщения() + 1, "ЧГ=0")); Формат(ТелеграмОбщегоНазначения.ИдПоследнегоСообщения() + 1, "ЧГ=0"));
ПараметрыЗапроса = Новый Структура("offset", Смещение); ПараметрыЗапроса = Новый Структура("offset", Смещение);
АдресРесурса = АдресРесурсаПоИмениМетода("getUpdates"); АдресРесурса = АдресРесурсаПоИмениМетода("getUpdates");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции КонецФункции
@@ -49,14 +60,16 @@
АдресРесурса = АдресРесурсаПоИмениМетода("getFile"); АдресРесурса = АдресРесурсаПоИмениМетода("getFile");
ПараметрыЗапроса = Новый Структура("file_id", ИдФайла); ПараметрыЗапроса = Новый Структура("file_id", ИдФайла);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции КонецФункции
Функция GetMe() Экспорт Функция GetMe() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("getMe"); АдресРесурса = АдресРесурсаПоИмениМетода("getMe");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции КонецФункции
@@ -66,7 +79,8 @@
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ДвоичныеДанныеДокумента = ДвоичныеДанныеДокумента(ИдЧата, ДокументДляОтправки, Надпись, БезУведомления, Разделитель); ДвоичныеДанныеДокумента = ДвоичныеДанныеДокумента(ИдЧата, ДокументДляОтправки, Надпись, БезУведомления, Разделитель);
ДанныеДокумента = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеДокумента); ДанныеДокумента = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеДокумента);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ДанныеДокумента); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса,, ДанныеДокумента);
КонецФункции КонецФункции
@@ -84,7 +98,8 @@
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ДвоичныеДанныеФото = ДвоичныеДанныеФайла(ФайлДляОтправки, ИмяФайла, "image/jpeg", "photo", Разделитель); ДвоичныеДанныеФото = ДвоичныеДанныеФайла(ФайлДляОтправки, ИмяФайла, "image/jpeg", "photo", Разделитель);
ДанныеФото = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеФото); ДанныеФото = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеФото);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса, ПараметрыЗапроса, ДанныеФото); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса, ДанныеФото);
КонецФункции КонецФункции

View File

@@ -107,7 +107,8 @@
Функция ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервере) Экспорт Функция ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервере) Экспорт
АдресРесурса = СтрШаблон("file/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ПутьКФайлуНаСервере); АдресРесурса = СтрШаблон("file/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ПутьКФайлуНаСервере);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса,, Истина); Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса,, Истина);
КонецФункции КонецФункции

View File

@@ -12,18 +12,40 @@
Ответ = ТелеграмМетодыВызовСервера.GetUpdates(); Ответ = ТелеграмМетодыВызовСервера.GetUpdates();
Если Ответ.Успех Тогда Если Ответ.Успех Тогда
МассивРядов = Новый Массив; //МассивРядов = Новый Массив;
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("один;два;три"); //МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("один;два;три");
МассивРядов.Добавить(МассивКнопок); //МассивРядов.Добавить(МассивКнопок);
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений"); //МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений");
МассивРядов.Добавить(МассивКнопок); //МассивРядов.Добавить(МассивКнопок);
Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина); //Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина);
//
//МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ.Тело);
//Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл
// ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм);
// ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text, Клавиатура);
//КонецЦикла;
МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ.Тело); МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ.Тело);
Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл
ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм); ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм);
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text, Клавиатура); Если СообщениеТелеграм.Сообщение.text = "Конфигурации" Тогда
ТекстОтвета = "Комплексная автоматизация" + Символы.ПС +
"Бухгалтерия предприятия" + Символы.ПС +
"Зарплата и управление персоналом" + Символы.ПС +
"Управление торговлей";
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, ТекстОтвета);
ИначеЕсли СообщениеТелеграм.Сообщение.text = "Подписки" Тогда
МассивПодписок = РаботаСОбновлениямиВызовСервера.КонфигурацииИзПодписки(СообщениеТелеграм.ИдЧата);
ТекстОтвета = "";
Для каждого Конфигурация Из МассивПодписок Цикл
ТекстОтвета = ТекстОтвета + СтрШаблон("%1(%2)%3",Конфигурация.Наименование, Конфигурация.ТекущаяВерсия, Символы.ПС);
КонецЦикла; КонецЦикла;
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, ТекстОтвета);
КонецЕсли;
//ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text);
КонецЦикла;
КонецЕсли; КонецЕсли;
Возврат Ответ; Возврат Ответ;
@@ -53,7 +75,24 @@
&НаКлиенте &НаКлиенте
Процедура PostЗапрос(Команда) Процедура PostЗапрос(Команда)
Ответ = ТелеграмМетодыВызовСервера.SendMessage(248415372, СообщениеДляОтправки); МассивРядов = Новый Массив;
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Конфигурации;Подписки");
МассивРядов.Добавить(МассивКнопок);
//МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений");
//ВторойРядКнопок = Новый Массив;
//Эмоджи = Символ(55357) + Символ(57005);
//Эмоджи = СтрЗаменить("\xF0\x9F\x94\x94", "\x", "%");
//Эмоджи = "&#128513";
//эмодзиДа = "%f0%9f%91%8d";
//эмодзиНет = "%f0%9f%91%8e";
//ВторойРядКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатуры(Эмоджи));
//МассивРядов.Добавить(ВторойРядКнопок);
Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина);
Ответ = ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, СообщениеДляОтправки,
ПредопределенноеЗначение("Перечисление.ТелеграмРежимРазметки.HTML"), Клавиатура);
Если НЕ Ответ = Неопределено Тогда Если НЕ Ответ = Неопределено Тогда
ВывестиОтвет(Ответ); ВывестиОтвет(Ответ);
КонецЕсли; КонецЕсли;

View File

@@ -28,6 +28,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Document.ЛогHttpЗапроса</xr:Item> <xr:Item xsi:type="xr:MDObjectRef">Document.ЛогHttpЗапроса</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.ТелеграмДокумент</xr:Item> <xr:Item xsi:type="xr:MDObjectRef">Catalog.ТелеграмДокумент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonPicture.КартинкаБот</xr:Item> <xr:Item xsi:type="xr:MDObjectRef">CommonPicture.КартинкаБот</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.ТелеграмРежимРазметки</xr:Item>
</Content> </Content>
</Properties> </Properties>
<ChildObjects/> <ChildObjects/>

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<VERSION>5</VERSION> <VERSION>6</VERSION>