diff --git a/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl
index c60fdb4..2d502c4 100644
--- a/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl
+++ b/src/cf/Catalogs/ТелеграмДокумент/Forms/ФормаЭлемента/Ext/Form/Module.bsl
@@ -2,25 +2,13 @@
&НаКлиенте
Процедура ПросмотрФайла(Команда)
- ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ПолучитьРасширениеИмениФайла(Объект.file_name));
+ ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РаботаСФайламиКлиентСервер.ПолучитьРасширениеИмениФайла(Объект.file_name));
ДвоичныеДанные = ПолучитьДвоичныеДанныеНаСервере();
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ЗапуститьПриложениеАсинх(ИмяВременногоФайла);
КонецПроцедуры
-&НаСервереБезКонтекста
-Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
-
- РасширениеФайла = "";
- МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
- Если МассивСтрок.Количество() > 1 Тогда
- РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1];
- КонецЕсли;
- Возврат РасширениеФайла;
-
-КонецФункции
-
&НаСервере
Функция ПолучитьДвоичныеДанныеНаСервере()
diff --git a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml
index 807a46d..2507edc 100644
--- a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml
+++ b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form.xml
@@ -4,16 +4,29 @@
ПослеЗаписи
+ ПриОткрытии
+ ПриСозданииНаСервере
НаборКонстант.ТелеграмВебХук
EnterOnInput
+ false
true
true
+
+
@@ -24,4 +37,36 @@
true
+
+
+
+
+ ru
+ Удалить веб хук
+
+
+
+
+ ru
+ Удалить веб хук
+
+
+ УдалитьВебХук
+
+
+
+
+ ru
+ Вывести информацию о вебхуке
+
+
+
+
+ ru
+ Вывести информацию о вебхуке
+
+
+ ВывестиИнформациюОВебхуке
+
+
\ No newline at end of file
diff --git a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl
index fa34f68..1bc4edc 100644
--- a/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl
+++ b/src/cf/CommonForms/ТелеграмВебХук/Ext/Form/Module.bsl
@@ -2,20 +2,42 @@
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
- Сообщить(РезультатУстановкиВебХукаНаСервере());
+ Ответ = ТелеграмМетодыВызовСервера.SetWebHook(ТелеграмВебХук());
+ ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = ТекстСообщения;
+ Сообщение.Сообщить();
КонецПроцедуры
&НаСервереБезКонтекста
-Функция РезультатУстановкиВебХукаНаСервере()
-
- Ответ = ТелеграмМетодыВызовСервера.SetWebHook(Константы.ТелеграмВебХук.Получить());
- ОтветОбъект = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ);
-
- Если ОтветОбъект.Получить("description") <> Неопределено Тогда
- Возврат ОтветОбъект["description"];
- КонецЕсли;
-
- Возврат Ответ;
-
+Функция ТелеграмВебХук()
+
+ Возврат Константы.ТелеграмВебХук.Получить();
+
КонецФункции
+
+&НаКлиенте
+Процедура УдалитьВебХук(Команда)
+
+ Ответ = ТелеграмМетодыВызовСервера.DeleteWebhook();
+ ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = ТекстСообщения;
+ Сообщение.Сообщить();
+
+КонецПроцедуры
+
+&НаКлиенте
+Процедура ВывестиИнформациюОВебхуке(Команда)
+
+ Ответ = ТелеграмМетодыВызовСервера.GetWebhookInfo();
+ Если Ответ.Успех И ЗначениеЗаполнено(Ответ.Тело) Тогда
+ Для каждого ПараметрОтвета из Ответ.Тело["result"] Цикл
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = "" + ПараметрОтвета.Ключ + "=" + ПараметрОтвета.Значение;
+ Сообщение.Сообщить();
+ КонецЦикла;
+ КонецЕсли
+
+КонецПроцедуры
diff --git a/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl
index fa429d6..3c9c420 100644
--- a/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl
+++ b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl
@@ -2,82 +2,115 @@
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
- Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
+ РезультатЗапроса = Новый Структура();
+ РезультатЗапроса.Вставить("Успех", Ложь);
+ РезультатЗапроса.Вставить("Тело", Неопределено);
+ РезультатЗапроса.Вставить("Описание", "");
+ РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные);
- Если Параметры <> Неопределено Тогда
- АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
- КонецЕсли;
- Запрос = Новый HTTPЗапрос(АдресРесурса);
- Запрос.Заголовки.Вставить("Content-Type","application/json");
-
- Ответ = Соединение.Получить(Запрос);
-
- Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
- Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
- Лог.Дата = ТекущаяДатаСеанса();
- Лог.HTTPЗапрос = Запрос.АдресРесурса;
- Лог.HTTPОтвет = ?(ДвоичныеДанные,"Двоичные данные",
- HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()));
- Лог.Записать();
- КонецЕсли;
-
- КодСостояния = Ответ.КодСостояния;
-
- Если КодСостояния = 200 Тогда
- ТелоОтвета = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ.ПолучитьТелоКакСтроку());
- Иначе
- ТелоОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ.ПолучитьТелоКакСтроку());
- Описание = ?(ТелоОтвета.Получить("description") <> Неопределено, ТелоОтвета["description"], "");
+ Попытка
+ Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
- ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
- СтрШаблон("Не удалось выполнить запрос. Код состояния = %1. %2", КодСостояния, Описание));
- ТелоОтвета = Неопределено;
- КонецЕсли;
+ Если Параметры <> Неопределено Тогда
+ АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
+ КонецЕсли;
+
+ Запрос = Новый HTTPЗапрос(АдресРесурса);
+ Запрос.Заголовки.Вставить("Content-Type","application/json");
+ Ответ = Соединение.Получить(Запрос);
+ ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
+
+ РезультатЗапроса.Тело = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(),
+ HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока));
+
+ Если НЕ ДвоичныеДанные И РезультатЗапроса.Тело.Получить("description") <> Неопределено Тогда
+ РезультатЗапроса.Описание = РезультатЗапроса.Тело["description"];
+ КонецЕсли;
+
+ КодСостояния = Ответ.КодСостояния;
+ Если КодСостояния = 200 Тогда
+ РезультатЗапроса.Успех = Истина;
+ Иначе
+ ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
+ СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
+ РезультатЗапроса.Описание));
+ КонецЕсли;
+
+ Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
+ ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.GET, ТелоОтветаКакСтрока, КодСостояния);
+ КонецЕсли;
+ Исключение
+ РезультатЗапроса.Успех = Ложь;
+ РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
+ ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
+ КонецПопытки;
- Возврат ТелоОтвета;
+ Возврат РезультатЗапроса;
КонецФункции
-Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Тело = Неопределено) Экспорт
+Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
- Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
+ РезультатЗапроса = Новый Структура();
+ РезультатЗапроса.Вставить("Успех", Ложь);
+ РезультатЗапроса.Вставить("Тело", Неопределено);
+ РезультатЗапроса.Вставить("Описание", "");
- Если Параметры <> Неопределено Тогда
- АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
- КонецЕсли;
- Запрос = Новый HTTPЗапрос(АдресРесурса);
- Запрос.Заголовки.Вставить("Content-Type","application/json");
- Если Тело <> Неопределено Тогда
- Запрос.УстановитьТелоИзСтроки(ОбъектВСтрокуJson(Тело));
- КонецЕсли;
+ Попытка
+ Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
+
+ Если Параметры <> Неопределено Тогда
+ АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
+ КонецЕсли;
+ Запрос = Новый HTTPЗапрос(АдресРесурса);
+
+ Если Данные <> Неопределено Тогда
+ Если Данные.Свойство("Разделитель") Тогда
+ Запрос.УстановитьТелоИзДвоичныхДанных(Данные.ДвоичныеДанные);
+ Запрос.Заголовки.Вставить("Content-Length", Формат(Данные.ДвоичныеДанные.Размер(), "ЧН=0; ЧГ="));
+ Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Данные.Разделитель);
+ КонецЕсли;
+ Иначе
+ Запрос.Заголовки.Вставить("Content-Type","application/json");
+ КонецЕсли;
+
+ Ответ = Соединение.ОтправитьДляОбработки(Запрос);
+ ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
+
+ ТелоДляОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока);
+ Если ТелоДляОтвета <> Неопределено Тогда
+ РезультатЗапроса.Тело = ТелоДляОтвета;
+ РезультатЗапроса.Описание = ?(ТелоДляОтвета.Получить("description") <> Неопределено, ТелоДляОтвета["description"], "");
+ КонецЕсли;
+
+ КодСостояния = Ответ.КодСостояния;
+ Если КодСостояния = 200 Тогда
+ РезультатЗапроса.Успех = Истина;
+ Иначе
+ ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
+ СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
+ РезультатЗапроса.Описание));
+ КонецЕсли;
+
+ Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
+ ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.POST, ТелоОтветаКакСтрока, КодСостояния);
+ КонецЕсли;
+ Исключение
+ РезультатЗапроса.Успех = Ложь;
+ РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
+ ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
+ КонецПопытки;
- Ответ = Соединение.ОтправитьДляОбработки(Запрос);
-
- Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
- Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
- Лог.Дата = ТекущаяДатаСеанса();
- Лог.HTTPЗапрос = Запрос.АдресРесурса;
- Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку());
- Лог.Записать();
- КонецЕсли;
-
- КодСостояния = Ответ.КодСостояния;
-
- Если КодСостояния = 200 Тогда
- ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
- Иначе
- Сообщение = Новый СообщениеПользователю;
- Сообщение.Текст = "Не удалось выполнить запрос. Код состояния = " + КодСостояния;
- Сообщение.Сообщить();
- ТелоОтвета = Неопределено;
- КонецЕсли;
-
- Возврат ТелоОтвета;
+ Возврат РезультатЗапроса;
КонецФункции
Функция СтрокаJsonВОбъект(СтрокаJson) Экспорт
+ Если НЕ ЗначениеЗаполнено(СтрокаJson) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJson);
Попытка
@@ -95,6 +128,11 @@
Функция ОбъектВСтрокуJson(Объект) Экспорт
+ Если Объект = Неопределено Тогда
+ Возврат "";
+ КонецЕсли;
+
+
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
@@ -150,7 +188,6 @@
КонецФункции
-
Функция АдресРесурсаСПараметрами(АдресРесурса, Параметры)
Если Параметры.Количество() = 0 Тогда
@@ -169,4 +206,18 @@
КонецФункции
+Процедура ЗалогироватьЗапрос(АдресРесурса, Метод, ТелоОтветаКакСтрока, КодСостояния)
+
+ АдресРесурса = СтрЗаменить(АдресРесурса, Константы.ТелеграмТокен.Получить(), "#token#");
+
+ Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
+ Лог.Дата = ТекущаяДатаСеанса();
+ Лог.HTTPЗапрос = АдресРесурса;
+ Лог.Метод = Метод;
+ Лог.КодСостояния = КодСостояния;
+ Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(ТелоОтветаКакСтрока);
+ Лог.Записать();
+
+КонецПроцедуры
+
#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/CommonModules/РаботаСФайламиКлиентСервер.xml b/src/cf/CommonModules/РаботаСФайламиКлиентСервер.xml
new file mode 100644
index 0000000..5520003
--- /dev/null
+++ b/src/cf/CommonModules/РаботаСФайламиКлиентСервер.xml
@@ -0,0 +1,23 @@
+
+
+
+
+ РаботаСФайламиКлиентСервер
+
+
+ ru
+ Работа с файлами клиент сервер
+
+
+
+ false
+ true
+ true
+ true
+ false
+ true
+ false
+ DontUse
+
+
+
\ No newline at end of file
diff --git a/src/cf/CommonModules/РаботаСФайламиКлиентСервер/Ext/Module.bsl b/src/cf/CommonModules/РаботаСФайламиКлиентСервер/Ext/Module.bsl
new file mode 100644
index 0000000..831f21c
--- /dev/null
+++ b/src/cf/CommonModules/РаботаСФайламиКлиентСервер/Ext/Module.bsl
@@ -0,0 +1,10 @@
+Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
+
+ РасширениеФайла = "";
+ МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
+ Если МассивСтрок.Количество() > 1 Тогда
+ РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1];
+ КонецЕсли;
+ Возврат РасширениеФайла;
+
+КонецФункции
diff --git a/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl
index 8691ee2..8979916 100644
--- a/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl
+++ b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl
@@ -4,7 +4,7 @@
ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки);
АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage");
- Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,,ТелоЗапроса);
+ Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ТелоЗапроса);
КонецФункции
@@ -48,13 +48,101 @@
КонецФункции
+Функция GetMe() Экспорт
+
+ АдресРесурса = АдресРесурсаПоИмениМетода("getMe");
+ Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса);
+
+КонецФункции
+
+Функция SendDocument(ИдЧата, ДокументДляОтправки, Надпись = Неопределено, БезУведомления = Ложь) Экспорт
+
+ АдресРесурса = АдресРесурсаПоИмениМетода("sendDocument");
+ Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
+ ДвоичныеДанныеДокумента = ДвоичныеДанныеДокумента(ИдЧата, ДокументДляОтправки, Надпись, БезУведомления, Разделитель);
+ ДанныеДокумента = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеДокумента);
+ Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ДанныеДокумента);
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция АдресРесурсаПоИмениМетода(ИмяМетода)
- Возврат СтрШаблон("/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ИмяМетода);
+ Токен = ТелеграмПовторноеИспользование.ТелеграмТокен();
+
+ Если ПустаяСтрока(Токен) Тогда
+ ВызватьИсключение "Не задан токен Telegram бота";
+ КонецЕсли;
+
+ Возврат СтрШаблон("/bot%1/%2", Токен, ИмяМетода);
+
+КонецФункции
+
+Функция ДвоичныеДанныеДокумента(ИдЧата, Документ, Надпись = Неопределено, БезУведомления = Ложь, Разделитель)
+
+ Если Документ = Неопределено ИЛИ Не (Документ.Свойство("ДанныеФайла") И ТипЗнч(Документ.ДанныеФайла) = Тип("ДвоичныеДанные")) Тогда
+ ВызватьИсключение "Неверный параметр Документ: ожидается непустой объект, содержащий двоичные данные";
+ КонецЕсли;
+
+ ИмяФайла = Документ.ИмяФайла;
+ ТипСодержимого = СтрШаблон("application/%1", РаботаСФайламиКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяФайла));
+
+ ТелоЗапроса = Новый ПотокВПамяти();
+ ЗаписьДанных = Новый ЗаписьДанных(ТелоЗапроса, , , Символы.ВК + Символы.ПС, "");
+
+ ЗаписатьЭлементаЗапроса(ЗаписьДанных, Разделитель, "document", Документ.ДанныеФайла, ИмяФайла, ТипСодержимого);
+ ЗаписатьЭлементаЗапроса(ЗаписьДанных, Разделитель, "chat_id", Формат(ИдЧата, "ЧН=0; ЧГ="));
+ ЗаписатьЭлементаЗапроса(ЗаписьДанных, Разделитель, "caption", Надпись);
+ ЗаписатьЭлементаЗапроса(ЗаписьДанных, Разделитель, "disable_notification", БулевоСтрокой(БезУведомления));
+
+ ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
+ ЗаписьДанных.Закрыть();
+
+ Возврат ТелоЗапроса.ЗакрытьИПолучитьДвоичныеДанные();
+
+КонецФункции
+
+Процедура ЗаписатьЭлементаЗапроса(ЗаписьДанных, Разделитель, ИмяПоля, Значение, ИмяФайла = Неопределено, ТипСодержимого = Неопределено)
+
+ Если Значение = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
+ Если ИмяФайла <> Неопределено Тогда
+ ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Disposition: form-data; name=%1; filename=%2", ИмяПоля, ИмяФайла));
+ Иначе
+ ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Disposition: form-data; name=%1", ИмяПоля));
+ КонецЕсли;
+
+ Если ТипСодержимого <> Неопределено Тогда
+ ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Type: %1", ТипСодержимого));
+ КонецЕсли;
+
+ ЗаписьДанных.ЗаписатьСтроку("");
+
+ Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
+ ЗаписьДанных.Записать(Значение);
+ Иначе
+ ЗаписьДанных.ЗаписатьСтроку(Значение);
+ КонецЕсли;
+
+ ЗаписьДанных.ЗаписатьСтроку("");
+
+КонецПроцедуры
+
+Функция БулевоСтрокой(БулевоЗначение)
+
+ Если ТипЗнч(БулевоЗначение) = Тип("Булево") Тогда
+ Если БулевоЗначение Тогда
+ Возврат "true";
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат "false";
КонецФункции
diff --git a/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl
index 2a545c0..5a7d52a 100644
--- a/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl
+++ b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl
@@ -109,25 +109,8 @@
Ответ = ТелеграмМетодыВызовСервера.GetFile(ИдДокумента);
- Если Ответ = Неопределено Тогда
- Возврат Ответ;
- КонецЕсли;
-
- ДанныеФайла = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ);
-
- //Если ДанныеФайла.Получить("ok") <> Неопределено Тогда
- // Если ДанныеФайла["ok"] И ДанныеФайла.Получить["result"] <> Неопределено Тогда
- // ПутьКФайлуНаСервереТелеграм = ДанныеФайла["result"]["file_path"];
- // Возврат ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервереТелеграм);
- // Иначе
- // ЗаписьЖурналаРегистрации("Телеграм.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
- // СтрШаблон("Не удалось получить файл по id. Код ошибки %1, описание: %2", , ДанныеФайла["error_code"],
- // ДанныеФайла["description"]));
- // КонецЕсли;
- //КонецЕсли;
-
- Если ДанныеФайла.Получить("result") <> Неопределено Тогда
- Возврат ПолучитьФайлССервераТелеграм(ДанныеФайла["result"]["file_path"]);
+ Если Ответ.Успех И Ответ.Тело.Получить("result") <> Неопределено Тогда
+ Возврат ПолучитьФайлССервераТелеграм(Ответ.Тело["result"]["file_path"]);
Иначе
Возврат Неопределено;
КонецЕсли;
diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml
index 0deaeef..b8e1c15 100644
--- a/src/cf/Configuration.xml
+++ b/src/cf/Configuration.xml
@@ -251,6 +251,7 @@
ТелеграмОбщегоНазначения
ТелеграмПовторноеИспользование
ТелеграмРегламент
+ РаботаСФайламиКлиентСервер
HTTPСервис_Telegram
ПроверкаОбновленийТелеграм
ТелеграмТокен
@@ -261,6 +262,7 @@
ТелеграмСообщение
ТелеграмДокумент
ЛогHttpЗапроса
+ МетодHTTPЗапроса
РаботаССообщениями
ТелеграмСообщения
diff --git a/src/cf/Documents/ЛогHttpЗапроса.xml b/src/cf/Documents/ЛогHttpЗапроса.xml
index 4b5cde0..546b122 100644
--- a/src/cf/Documents/ЛогHttpЗапроса.xml
+++ b/src/cf/Documents/ЛогHttpЗапроса.xml
@@ -50,7 +50,7 @@
DontUse
Directly
Document.ЛогHttpЗапроса.Form.ФормаДокумента
-
+ Document.ЛогHttpЗапроса.Form.ФормаСписка
@@ -164,7 +164,91 @@
Use
+
+
+ Метод
+
+
+ ru
+ Метод
+
+
+
+
+ cfg:EnumRef.МетодHTTPЗапроса
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+ КодСостояния
+
+
+ ru
+ Код состояния
+
+
+
+
+ xs:decimal
+
+ 10
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
\ No newline at end of file
diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml
index 6e45b6e..7ceb0a9 100644
--- a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml
+++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form.xml
@@ -4,6 +4,9 @@
Auto
true
+
+ ПриСозданииНаСервере
+
Объект.Number
@@ -19,6 +22,12 @@
+
+ Объект.Метод
+ true
+
+
+
diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form/Module.bsl b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form/Module.bsl
new file mode 100644
index 0000000..1ed1042
--- /dev/null
+++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаДокумента/Ext/Form/Module.bsl
@@ -0,0 +1,7 @@
+
+&НаСервере
+Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
+
+ ЭтаФорма.ТолькоПросмотр = Истина;
+
+КонецПроцедуры
diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка.xml b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка.xml
new file mode 100644
index 0000000..4574205
--- /dev/null
+++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка.xml
@@ -0,0 +1,21 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка/Ext/Form.xml b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка/Ext/Form.xml
new file mode 100644
index 0000000..b96ac68
--- /dev/null
+++ b/src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка/Ext/Form.xml
@@ -0,0 +1,129 @@
+
+
\ No newline at end of file
diff --git a/src/cf/Enums/МетодHTTPЗапроса.xml b/src/cf/Enums/МетодHTTPЗапроса.xml
new file mode 100644
index 0000000..4c91337
--- /dev/null
+++ b/src/cf/Enums/МетодHTTPЗапроса.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+ 062ec44f-ddff-4eb2-9d67-ace1243a7874
+ cdbc4fda-6d89-4e83-950b-648b679c0a5c
+
+
+ 75bb42b3-89ee-4666-a3d9-dfe18b9c28e1
+ bc3f9676-2064-4845-a533-556e907c48bf
+
+
+ ac64ef38-c6cc-4bc3-a870-1784bd2b1317
+ 35a3a837-9322-46af-9807-8d233146ed18
+
+
+
+ МетодHTTPЗапроса
+
+
+ ru
+ Метод HTTP запроса
+
+
+
+ false
+
+ true
+ BothWays
+
+
+
+
+
+
+
+ Auto
+
+
+
+
+ GET
+
+
+ ru
+ GET
+
+
+
+
+
+
+
+ POST
+
+
+ ru
+ POST
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/HTTPServices/HTTPСервис_Telegram.xml b/src/cf/HTTPServices/HTTPСервис_Telegram.xml
index 12aa03d..63b1884 100644
--- a/src/cf/HTTPServices/HTTPСервис_Telegram.xml
+++ b/src/cf/HTTPServices/HTTPСервис_Telegram.xml
@@ -39,6 +39,30 @@
+
+
+ ШаблонURL2
+
+
+ /info
+
+
+
+
+ GeBotInfo
+
+
+ ru
+ Ge bot info
+
+
+
+ GET
+ ШаблонURL1GeBotInfo
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl b/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl
index fc20ba5..94eec5d 100644
--- a/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl
+++ b/src/cf/HTTPServices/HTTPСервис_Telegram/Ext/Module.bsl
@@ -2,28 +2,30 @@
Функция ШаблонURL1PostGetUpdate(Запрос)
Попытка
- Лог = Неопределено;
- Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
- Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
- Лог.Дата = ТекущаяДатаСеанса();
- ТелоЗапросаДляЛогов = HttpОбщегоНазначения.ФорматированныйJson(Запрос.ПолучитьТелоКакСтроку());
- Лог.HTTPЗапрос = ТелоЗапросаДляЛогов;
- КонецЕсли;
ТелеграмОбщегоНазначения.ОбработатьИСохранитьОбновленияТелеграм(Запрос.ПолучитьТелоКакСтроку());
Ответ = HttpОбщегоНазначения.ОтветУспех();
- Если Лог <> Неопределено Тогда
- Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку());
- Лог.Записать();
- КонецЕсли;
Возврат Ответ;
Исключение
- Ответ = HttpОбщегоНазначения.ОтветОшибка();
- Если Лог <> Неопределено Тогда
- Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку());
- Лог.Записать();
- КонецЕсли;
-
- Возврат Ответ;
+ ЗаписьЖурналаРегистрации("Телеграм-бот.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ Возврат HttpОбщегоНазначения.ОтветОшибка();
+ КонецПопытки;
+
+КонецФункции
+
+Функция ШаблонURL1GeBotInfo(Запрос)
+
+ Попытка
+ ОтветБотИнфо = ТелеграмМетодыВызовСервера.GetMe();
+ Если ОтветБотИнфо.Успех Тогда
+ Ответ = Новый HTTPСервисОтвет(200);
+ Ответ.УстановитьТелоИзСтроки(HttpОбщегоНазначения.ОбъектВСтрокуJson(ОтветБотИнфо.Тело));
+ Возврат Ответ;
+ КонецЕсли;
+ Исключение
+ ЗаписьЖурналаРегистрации("Телеграм-бот.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+ Возврат HttpОбщегоНазначения.ОтветОшибка();
КонецПопытки;
КонецФункции
diff --git a/src/cf/Subsystems/ТелеграмБот.xml b/src/cf/Subsystems/ТелеграмБот.xml
index 1aef90c..97574b8 100644
--- a/src/cf/Subsystems/ТелеграмБот.xml
+++ b/src/cf/Subsystems/ТелеграмБот.xml
@@ -26,8 +26,8 @@
CommonForm.ТелеграмВебХук
Constant.ЛогироватьHttpЗапросы
Document.ЛогHttpЗапроса
- 23bf8986-e502-4170-ad89-eac16b64e144
Catalog.ТелеграмДокумент
+ c3c88554-5bc5-41b7-ae33-7a29b983d784
diff --git a/src/cf/VERSION b/src/cf/VERSION
index 6f42a32..4801487 100644
--- a/src/cf/VERSION
+++ b/src/cf/VERSION
@@ -1,2 +1,2 @@
-1
+2