- Рефакторинг процедур http запросов
- Изменил структуру логирования - Добавил метод sendDocument() - Структурировал код для большей читабельности
This commit is contained in:
@@ -2,25 +2,13 @@
|
||||
&НаКлиенте
|
||||
Процедура ПросмотрФайла(Команда)
|
||||
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ПолучитьРасширениеИмениФайла(Объект.file_name));
|
||||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РаботаСФайламиКлиентСервер.ПолучитьРасширениеИмениФайла(Объект.file_name));
|
||||
ДвоичныеДанные = ПолучитьДвоичныеДанныеНаСервере();
|
||||
ДвоичныеДанные.Записать(ИмяВременногоФайла);
|
||||
ЗапуститьПриложениеАсинх(ИмяВременногоФайла);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
|
||||
|
||||
РасширениеФайла = "";
|
||||
МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
|
||||
Если МассивСтрок.Количество() > 1 Тогда
|
||||
РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1];
|
||||
КонецЕсли;
|
||||
Возврат РасширениеФайла;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПолучитьДвоичныеДанныеНаСервере()
|
||||
|
||||
|
||||
@@ -4,16 +4,29 @@
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="AfterWrite">ПослеЗаписи</Event>
|
||||
<Event name="OnOpen">ПриОткрытии</Event>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<InputField name="ТелеграмВебХук" id="1">
|
||||
<DataPath>НаборКонстант.ТелеграмВебХук</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<AutoMaxWidth>false</AutoMaxWidth>
|
||||
<MultiLine>true</MultiLine>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="ТелеграмВебХукКонтекстноеМеню" id="2"/>
|
||||
<ExtendedTooltip name="ТелеграмВебХукРасширеннаяПодсказка" id="3"/>
|
||||
</InputField>
|
||||
<Button name="УдалитьВебХук" id="4">
|
||||
<Type>UsualButton</Type>
|
||||
<CommandName>Form.Command.УдалитьВебХук</CommandName>
|
||||
<ExtendedTooltip name="УдалитьВебХукРасширеннаяПодсказка" id="5"/>
|
||||
</Button>
|
||||
<Button name="ВывестиИнформациюОВебхуке" id="6">
|
||||
<Type>UsualButton</Type>
|
||||
<CommandName>Form.Command.ВывестиИнформациюОВебхуке</CommandName>
|
||||
<ExtendedTooltip name="ВывестиИнформациюОВебхукеРасширеннаяПодсказка" id="7"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="НаборКонстант" id="1">
|
||||
@@ -24,4 +37,36 @@
|
||||
<SavedData>true</SavedData>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
<Commands>
|
||||
<Command name="УдалитьВебХук" id="1">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Удалить веб хук</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Удалить веб хук</v8:content>
|
||||
</v8:item>
|
||||
</ToolTip>
|
||||
<Action>УдалитьВебХук</Action>
|
||||
</Command>
|
||||
<Command name="ВывестиИнформациюОВебхуке" id="2">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Вывести информацию о вебхуке</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Вывести информацию о вебхуке</v8:content>
|
||||
</v8:item>
|
||||
</ToolTip>
|
||||
<Action>ВывестиИнформациюОВебхуке</Action>
|
||||
</Command>
|
||||
</Commands>
|
||||
</Form>
|
||||
@@ -2,20 +2,42 @@
|
||||
&НаКлиенте
|
||||
Процедура ПослеЗаписи(ПараметрыЗаписи)
|
||||
|
||||
Сообщить(РезультатУстановкиВебХукаНаСервере());
|
||||
Ответ = ТелеграмМетодыВызовСервера.SetWebHook(ТелеграмВебХук());
|
||||
ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = ТекстСообщения;
|
||||
Сообщение.Сообщить();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция РезультатУстановкиВебХукаНаСервере()
|
||||
Функция ТелеграмВебХук()
|
||||
|
||||
Ответ = ТелеграмМетодыВызовСервера.SetWebHook(Константы.ТелеграмВебХук.Получить());
|
||||
ОтветОбъект = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ);
|
||||
|
||||
Если ОтветОбъект.Получить("description") <> Неопределено Тогда
|
||||
Возврат ОтветОбъект["description"];
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Константы.ТелеграмВебХук.Получить();
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура УдалитьВебХук(Команда)
|
||||
|
||||
Ответ = ТелеграмМетодыВызовСервера.DeleteWebhook();
|
||||
ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = ТекстСообщения;
|
||||
Сообщение.Сообщить();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВывестиИнформациюОВебхуке(Команда)
|
||||
|
||||
Ответ = ТелеграмМетодыВызовСервера.GetWebhookInfo();
|
||||
Если Ответ.Успех И ЗначениеЗаполнено(Ответ.Тело) Тогда
|
||||
Для каждого ПараметрОтвета из Ответ.Тело["result"] Цикл
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = "" + ПараметрОтвета.Ключ + "=" + ПараметрОтвета.Значение;
|
||||
Сообщение.Сообщить();
|
||||
КонецЦикла;
|
||||
КонецЕсли
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -2,82 +2,115 @@
|
||||
|
||||
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
|
||||
|
||||
РезультатЗапроса = Новый Структура();
|
||||
РезультатЗапроса.Вставить("Успех", Ложь);
|
||||
РезультатЗапроса.Вставить("Тело", Неопределено);
|
||||
РезультатЗапроса.Вставить("Описание", "");
|
||||
РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные);
|
||||
|
||||
Попытка
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
||||
|
||||
Если Параметры <> Неопределено Тогда
|
||||
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
||||
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
||||
|
||||
Ответ = Соединение.Получить(Запрос);
|
||||
ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
|
||||
|
||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||
Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
|
||||
Лог.Дата = ТекущаяДатаСеанса();
|
||||
Лог.HTTPЗапрос = Запрос.АдресРесурса;
|
||||
Лог.HTTPОтвет = ?(ДвоичныеДанные,"Двоичные данные",
|
||||
HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()));
|
||||
Лог.Записать();
|
||||
РезультатЗапроса.Тело = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(),
|
||||
HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока));
|
||||
|
||||
Если НЕ ДвоичныеДанные И РезультатЗапроса.Тело.Получить("description") <> Неопределено Тогда
|
||||
РезультатЗапроса.Описание = РезультатЗапроса.Тело["description"];
|
||||
КонецЕсли;
|
||||
|
||||
КодСостояния = Ответ.КодСостояния;
|
||||
|
||||
Если КодСостояния = 200 Тогда
|
||||
ТелоОтвета = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ.ПолучитьТелоКакСтроку());
|
||||
РезультатЗапроса.Успех = Истина;
|
||||
Иначе
|
||||
ТелоОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ.ПолучитьТелоКакСтроку());
|
||||
Описание = ?(ТелоОтвета.Получить("description") <> Неопределено, ТелоОтвета["description"], "");
|
||||
|
||||
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
||||
СтрШаблон("Не удалось выполнить запрос. Код состояния = %1. %2", КодСостояния, Описание));
|
||||
ТелоОтвета = Неопределено;
|
||||
СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
|
||||
РезультатЗапроса.Описание));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТелоОтвета;
|
||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||
ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.GET, ТелоОтветаКакСтрока, КодСостояния);
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
РезультатЗапроса.Успех = Ложь;
|
||||
РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
|
||||
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
|
||||
КонецПопытки;
|
||||
|
||||
Возврат РезультатЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Тело = Неопределено) Экспорт
|
||||
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
|
||||
|
||||
РезультатЗапроса = Новый Структура();
|
||||
РезультатЗапроса.Вставить("Успех", Ложь);
|
||||
РезультатЗапроса.Вставить("Тело", Неопределено);
|
||||
РезультатЗапроса.Вставить("Описание", "");
|
||||
|
||||
Попытка
|
||||
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
||||
|
||||
Если Параметры <> Неопределено Тогда
|
||||
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
||||
КонецЕсли;
|
||||
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
||||
|
||||
Если Данные <> Неопределено Тогда
|
||||
Если Данные.Свойство("Разделитель") Тогда
|
||||
Запрос.УстановитьТелоИзДвоичныхДанных(Данные.ДвоичныеДанные);
|
||||
Запрос.Заголовки.Вставить("Content-Length", Формат(Данные.ДвоичныеДанные.Размер(), "ЧН=0; ЧГ="));
|
||||
Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Данные.Разделитель);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
||||
Если Тело <> Неопределено Тогда
|
||||
Запрос.УстановитьТелоИзСтроки(ОбъектВСтрокуJson(Тело));
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
|
||||
ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
|
||||
|
||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||
Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
|
||||
Лог.Дата = ТекущаяДатаСеанса();
|
||||
Лог.HTTPЗапрос = Запрос.АдресРесурса;
|
||||
Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку());
|
||||
Лог.Записать();
|
||||
ТелоДляОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока);
|
||||
Если ТелоДляОтвета <> Неопределено Тогда
|
||||
РезультатЗапроса.Тело = ТелоДляОтвета;
|
||||
РезультатЗапроса.Описание = ?(ТелоДляОтвета.Получить("description") <> Неопределено, ТелоДляОтвета["description"], "");
|
||||
КонецЕсли;
|
||||
|
||||
КодСостояния = Ответ.КодСостояния;
|
||||
|
||||
Если КодСостояния = 200 Тогда
|
||||
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
|
||||
РезультатЗапроса.Успех = Истина;
|
||||
Иначе
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
Сообщение.Текст = "Не удалось выполнить запрос. Код состояния = " + КодСостояния;
|
||||
Сообщение.Сообщить();
|
||||
ТелоОтвета = Неопределено;
|
||||
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
||||
СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
|
||||
РезультатЗапроса.Описание));
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТелоОтвета;
|
||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||
ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.POST, ТелоОтветаКакСтрока, КодСостояния);
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
РезультатЗапроса.Успех = Ложь;
|
||||
РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
|
||||
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
|
||||
КонецПопытки;
|
||||
|
||||
Возврат РезультатЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Строка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(ТелоОтветаКакСтрока);
|
||||
Лог.Записать();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
23
src/cf/CommonModules/РаботаСФайламиКлиентСервер.xml
Normal file
23
src/cf/CommonModules/РаботаСФайламиКлиентСервер.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
|
||||
<CommonModule uuid="bc2f6893-5ccb-40f8-8de8-ef7624ff4a5d">
|
||||
<Properties>
|
||||
<Name>РаботаСФайламиКлиентСервер</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Работа с файлами клиент сервер</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Global>false</Global>
|
||||
<ClientManagedApplication>true</ClientManagedApplication>
|
||||
<Server>true</Server>
|
||||
<ExternalConnection>true</ExternalConnection>
|
||||
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||
<ServerCall>true</ServerCall>
|
||||
<Privileged>false</Privileged>
|
||||
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||
</Properties>
|
||||
</CommonModule>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,10 @@
|
||||
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
|
||||
|
||||
РасширениеФайла = "";
|
||||
МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
|
||||
Если МассивСтрок.Количество() > 1 Тогда
|
||||
РасширениеФайла = МассивСтрок[МассивСтрок.Количество() - 1];
|
||||
КонецЕсли;
|
||||
Возврат РасширениеФайла;
|
||||
|
||||
КонецФункции
|
||||
@@ -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";
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -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"]);
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -251,6 +251,7 @@
|
||||
<CommonModule>ТелеграмОбщегоНазначения</CommonModule>
|
||||
<CommonModule>ТелеграмПовторноеИспользование</CommonModule>
|
||||
<CommonModule>ТелеграмРегламент</CommonModule>
|
||||
<CommonModule>РаботаСФайламиКлиентСервер</CommonModule>
|
||||
<HTTPService>HTTPСервис_Telegram</HTTPService>
|
||||
<ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob>
|
||||
<Constant>ТелеграмТокен</Constant>
|
||||
@@ -261,6 +262,7 @@
|
||||
<Catalog>ТелеграмСообщение</Catalog>
|
||||
<Catalog>ТелеграмДокумент</Catalog>
|
||||
<Document>ЛогHttpЗапроса</Document>
|
||||
<Enum>МетодHTTPЗапроса</Enum>
|
||||
<DataProcessor>РаботаССообщениями</DataProcessor>
|
||||
<InformationRegister>ТелеграмСообщения</InformationRegister>
|
||||
</ChildObjects>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm>Document.ЛогHttpЗапроса.Form.ФормаДокумента</DefaultObjectForm>
|
||||
<DefaultListForm/>
|
||||
<DefaultListForm>Document.ЛогHttpЗапроса.Form.ФормаСписка</DefaultListForm>
|
||||
<DefaultChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryListForm/>
|
||||
@@ -164,7 +164,91 @@
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="7f828e0d-717b-432e-a5af-c88f7c687b23">
|
||||
<Properties>
|
||||
<Name>Метод</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Метод</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>cfg:EnumRef.МетодHTTPЗапроса</v8:Type>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="9d3d2497-4ab3-4235-a5c5-4ec678146549">
|
||||
<Properties>
|
||||
<Name>КодСостояния</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Код состояния</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>10</v8:Digits>
|
||||
<v8:FractionDigits>0</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Form>ФормаДокумента</Form>
|
||||
<Form>ФормаСписка</Form>
|
||||
</ChildObjects>
|
||||
</Document>
|
||||
</MetaDataObject>
|
||||
@@ -4,6 +4,9 @@
|
||||
<UsePostingMode>Auto</UsePostingMode>
|
||||
<RepostOnWrite>true</RepostOnWrite>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<InputField name="Номер" id="1">
|
||||
<DataPath>Объект.Number</DataPath>
|
||||
@@ -19,6 +22,12 @@
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
||||
</InputField>
|
||||
<InputField name="Метод" id="18">
|
||||
<DataPath>Объект.Метод</DataPath>
|
||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||
<ContextMenu name="МетодКонтекстноеМеню" id="19"/>
|
||||
<ExtendedTooltip name="МетодРасширеннаяПодсказка" id="20"/>
|
||||
</InputField>
|
||||
<UsualGroup name="HTTP" id="13">
|
||||
<Title>
|
||||
<v8:item>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
ЭтаФорма.ТолькоПросмотр = Истина;
|
||||
|
||||
КонецПроцедуры
|
||||
21
src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка.xml
Normal file
21
src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
|
||||
<Form uuid="d008fa49-c87c-4ad1-aebb-0703895d1310">
|
||||
<Properties>
|
||||
<Name>ФормаСписка</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма списка</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
129
src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка/Ext/Form.xml
Normal file
129
src/cf/Documents/ЛогHttpЗапроса/Forms/ФормаСписка/Ext/Form.xml
Normal file
@@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<ChildItems>
|
||||
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Группа пользовательских настроек</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<VerticalStretch>false</VerticalStretch>
|
||||
<Group>Vertical</Group>
|
||||
<ShowTitle>false</ShowTitle>
|
||||
<ExtendedTooltip name="СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка" id="2"/>
|
||||
</UsualGroup>
|
||||
<Table name="Список" id="3">
|
||||
<Representation>List</Representation>
|
||||
<CommandBarLocation>None</CommandBarLocation>
|
||||
<DefaultItem>true</DefaultItem>
|
||||
<UseAlternationRowColor>true</UseAlternationRowColor>
|
||||
<InitialTreeView>ExpandTopLevel</InitialTreeView>
|
||||
<EnableStartDrag>true</EnableStartDrag>
|
||||
<DataPath>Список</DataPath>
|
||||
<RowPictureDataPath>Список.DefaultPicture</RowPictureDataPath>
|
||||
<AutoRefresh>false</AutoRefresh>
|
||||
<AutoRefreshPeriod>60</AutoRefreshPeriod>
|
||||
<Period>
|
||||
<v8:variant xsi:type="v8:StandardPeriodVariant">Custom</v8:variant>
|
||||
<v8:startDate>0001-01-01T00:00:00</v8:startDate>
|
||||
<v8:endDate>0001-01-01T00:00:00</v8:endDate>
|
||||
</Period>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<RestoreCurrentRow>false</RestoreCurrentRow>
|
||||
<TopLevelParent xsi:nil="true"/>
|
||||
<ShowRoot>true</ShowRoot>
|
||||
<AllowRootChoice>false</AllowRootChoice>
|
||||
<UpdateOnDataChange>Auto</UpdateOnDataChange>
|
||||
<UserSettingsGroup>СписокКомпоновщикНастроекПользовательскиеНастройки</UserSettingsGroup>
|
||||
<AllowGettingCurrentRowURL>true</AllowGettingCurrentRowURL>
|
||||
<ContextMenu name="СписокКонтекстноеМеню" id="4"/>
|
||||
<AutoCommandBar name="СписокКоманднаяПанель" id="5">
|
||||
<Autofill>false</Autofill>
|
||||
</AutoCommandBar>
|
||||
<ExtendedTooltip name="СписокРасширеннаяПодсказка" id="6"/>
|
||||
<SearchStringAddition name="СписокСтрокаПоиска" id="7">
|
||||
<AdditionSource>
|
||||
<Item>Список</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокСтрокаПоискаКонтекстноеМеню" id="8"/>
|
||||
<ExtendedTooltip name="СписокСтрокаПоискаРасширеннаяПодсказка" id="9"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="СписокСостояниеПросмотра" id="10">
|
||||
<AdditionSource>
|
||||
<Item>Список</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокСостояниеПросмотраКонтекстноеМеню" id="11"/>
|
||||
<ExtendedTooltip name="СписокСостояниеПросмотраРасширеннаяПодсказка" id="12"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="СписокУправлениеПоиском" id="13">
|
||||
<AdditionSource>
|
||||
<Item>Список</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СписокУправлениеПоискомКонтекстноеМеню" id="14"/>
|
||||
<ExtendedTooltip name="СписокУправлениеПоискомРасширеннаяПодсказка" id="15"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<LabelField name="Дата" id="16">
|
||||
<DataPath>Список.Date</DataPath>
|
||||
<DefaultItem>true</DefaultItem>
|
||||
<ContextMenu name="ДатаКонтекстноеМеню" id="17"/>
|
||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="18"/>
|
||||
</LabelField>
|
||||
<LabelField name="Номер" id="19">
|
||||
<DataPath>Список.Number</DataPath>
|
||||
<ContextMenu name="НомерКонтекстноеМеню" id="20"/>
|
||||
<ExtendedTooltip name="НомерРасширеннаяПодсказка" id="21"/>
|
||||
</LabelField>
|
||||
<LabelField name="Метод" id="25">
|
||||
<DataPath>Список.Метод</DataPath>
|
||||
<ContextMenu name="МетодКонтекстноеМеню" id="26"/>
|
||||
<ExtendedTooltip name="МетодРасширеннаяПодсказка" id="27"/>
|
||||
</LabelField>
|
||||
<LabelField name="КодСостояния" id="31">
|
||||
<DataPath>Список.КодСостояния</DataPath>
|
||||
<ContextMenu name="КодСостоянияКонтекстноеМеню" id="32"/>
|
||||
<ExtendedTooltip name="КодСостоянияРасширеннаяПодсказка" id="33"/>
|
||||
</LabelField>
|
||||
<LabelField name="HTTPЗапрос" id="28">
|
||||
<DataPath>Список.HTTPЗапрос</DataPath>
|
||||
<ContextMenu name="HTTPЗапросКонтекстноеМеню" id="29"/>
|
||||
<ExtendedTooltip name="HTTPЗапросРасширеннаяПодсказка" id="30"/>
|
||||
</LabelField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Список" id="1">
|
||||
<Type>
|
||||
<v8:Type>cfg:DynamicList</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
<Settings xsi:type="DynamicList">
|
||||
<ManualQuery>false</ManualQuery>
|
||||
<DynamicDataRead>true</DynamicDataRead>
|
||||
<MainTable>Document.ЛогHttpЗапроса</MainTable>
|
||||
<ListSettings>
|
||||
<dcsset:filter>
|
||||
<dcsset:viewMode>Normal</dcsset:viewMode>
|
||||
<dcsset:userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</dcsset:userSettingID>
|
||||
</dcsset:filter>
|
||||
<dcsset:order>
|
||||
<dcsset:viewMode>Normal</dcsset:viewMode>
|
||||
<dcsset:userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</dcsset:userSettingID>
|
||||
</dcsset:order>
|
||||
<dcsset:conditionalAppearance>
|
||||
<dcsset:viewMode>Normal</dcsset:viewMode>
|
||||
<dcsset:userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</dcsset:userSettingID>
|
||||
</dcsset:conditionalAppearance>
|
||||
<dcsset:itemsViewMode>Normal</dcsset:itemsViewMode>
|
||||
<dcsset:itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</dcsset:itemsUserSettingID>
|
||||
</ListSettings>
|
||||
</Settings>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Form>
|
||||
67
src/cf/Enums/МетодHTTPЗапроса.xml
Normal file
67
src/cf/Enums/МетодHTTPЗапроса.xml
Normal file
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
|
||||
<Enum uuid="71ba9b1f-8966-4c88-accf-4683d4764b70">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="EnumRef.МетодHTTPЗапроса" category="Ref">
|
||||
<xr:TypeId>062ec44f-ddff-4eb2-9d67-ace1243a7874</xr:TypeId>
|
||||
<xr:ValueId>cdbc4fda-6d89-4e83-950b-648b679c0a5c</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="EnumManager.МетодHTTPЗапроса" category="Manager">
|
||||
<xr:TypeId>75bb42b3-89ee-4666-a3d9-dfe18b9c28e1</xr:TypeId>
|
||||
<xr:ValueId>bc3f9676-2064-4845-a533-556e907c48bf</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="EnumList.МетодHTTPЗапроса" category="List">
|
||||
<xr:TypeId>ac64ef38-c6cc-4bc3-a870-1784bd2b1317</xr:TypeId>
|
||||
<xr:ValueId>35a3a837-9322-46af-9807-8d233146ed18</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>МетодHTTPЗапроса</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Метод HTTP запроса</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>false</UseStandardCommands>
|
||||
<Characteristics/>
|
||||
<QuickChoice>true</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<EnumValue uuid="7e9d78ae-a70f-4b89-88d7-f05af30bbbf8">
|
||||
<Properties>
|
||||
<Name>GET</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>GET</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
<EnumValue uuid="94fc155f-0031-4d7e-9dd4-4d424566307b">
|
||||
<Properties>
|
||||
<Name>POST</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>POST</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
</Properties>
|
||||
</EnumValue>
|
||||
</ChildObjects>
|
||||
</Enum>
|
||||
</MetaDataObject>
|
||||
@@ -39,6 +39,30 @@
|
||||
</Method>
|
||||
</ChildObjects>
|
||||
</URLTemplate>
|
||||
<URLTemplate uuid="fd611f01-bc5b-412f-9d6a-395f20daf8f7">
|
||||
<Properties>
|
||||
<Name>ШаблонURL2</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<Template>/info</Template>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Method uuid="570679c7-7797-42cc-ab33-1b3b48407bdf">
|
||||
<Properties>
|
||||
<Name>GeBotInfo</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Ge bot info</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<HTTPMethod>GET</HTTPMethod>
|
||||
<Handler>ШаблонURL1GeBotInfo</Handler>
|
||||
</Properties>
|
||||
</Method>
|
||||
</ChildObjects>
|
||||
</URLTemplate>
|
||||
</ChildObjects>
|
||||
</HTTPService>
|
||||
</MetaDataObject>
|
||||
@@ -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ОбщегоНазначения.ОтветОшибка();
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
<xr:Item xsi:type="xr:MDObjectRef">CommonForm.ТелеграмВебХук</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Constant.ЛогироватьHttpЗапросы</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Document.ЛогHttpЗапроса</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">23bf8986-e502-4170-ad89-eac16b64e144</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.ТелеграмДокумент</xr:Item>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">c3c88554-5bc5-41b7-ae33-7a29b983d784</xr:Item>
|
||||
</Content>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VERSION>1</VERSION>
|
||||
<VERSION>2</VERSION>
|
||||
|
||||
Reference in New Issue
Block a user