- Рефакторинг процедур 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"/>
|
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||||
<Events>
|
<Events>
|
||||||
<Event name="AfterWrite">ПослеЗаписи</Event>
|
<Event name="AfterWrite">ПослеЗаписи</Event>
|
||||||
|
<Event name="OnOpen">ПриОткрытии</Event>
|
||||||
|
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||||
</Events>
|
</Events>
|
||||||
<ChildItems>
|
<ChildItems>
|
||||||
<InputField name="ТелеграмВебХук" id="1">
|
<InputField name="ТелеграмВебХук" id="1">
|
||||||
<DataPath>НаборКонстант.ТелеграмВебХук</DataPath>
|
<DataPath>НаборКонстант.ТелеграмВебХук</DataPath>
|
||||||
<EditMode>EnterOnInput</EditMode>
|
<EditMode>EnterOnInput</EditMode>
|
||||||
|
<AutoMaxWidth>false</AutoMaxWidth>
|
||||||
<MultiLine>true</MultiLine>
|
<MultiLine>true</MultiLine>
|
||||||
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||||
<ContextMenu name="ТелеграмВебХукКонтекстноеМеню" id="2"/>
|
<ContextMenu name="ТелеграмВебХукКонтекстноеМеню" id="2"/>
|
||||||
<ExtendedTooltip name="ТелеграмВебХукРасширеннаяПодсказка" id="3"/>
|
<ExtendedTooltip name="ТелеграмВебХукРасширеннаяПодсказка" id="3"/>
|
||||||
</InputField>
|
</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>
|
</ChildItems>
|
||||||
<Attributes>
|
<Attributes>
|
||||||
<Attribute name="НаборКонстант" id="1">
|
<Attribute name="НаборКонстант" id="1">
|
||||||
@@ -24,4 +37,36 @@
|
|||||||
<SavedData>true</SavedData>
|
<SavedData>true</SavedData>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
</Attributes>
|
</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>
|
</Form>
|
||||||
@@ -2,20 +2,42 @@
|
|||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПослеЗаписи(ПараметрыЗаписи)
|
Процедура ПослеЗаписи(ПараметрыЗаписи)
|
||||||
|
|
||||||
Сообщить(РезультатУстановкиВебХукаНаСервере());
|
Ответ = ТелеграмМетодыВызовСервера.SetWebHook(ТелеграмВебХук());
|
||||||
|
ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
|
||||||
|
Сообщение = Новый СообщениеПользователю;
|
||||||
|
Сообщение.Текст = ТекстСообщения;
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаСервереБезКонтекста
|
&НаСервереБезКонтекста
|
||||||
Функция РезультатУстановкиВебХукаНаСервере()
|
Функция ТелеграмВебХук()
|
||||||
|
|
||||||
Ответ = ТелеграмМетодыВызовСервера.SetWebHook(Константы.ТелеграмВебХук.Получить());
|
Возврат Константы.ТелеграмВебХук.Получить();
|
||||||
ОтветОбъект = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ);
|
|
||||||
|
|
||||||
Если ОтветОбъект.Получить("description") <> Неопределено Тогда
|
|
||||||
Возврат ОтветОбъект["description"];
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Возврат Ответ;
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура УдалитьВебХук(Команда)
|
||||||
|
|
||||||
|
Ответ = ТелеграмМетодыВызовСервера.DeleteWebhook();
|
||||||
|
ТекстСообщения = СтрШаблон(?(Ответ.Успех, "Успешно: %1","Ошибка: %1"), Ответ.Описание);
|
||||||
|
Сообщение = Новый СообщениеПользователю;
|
||||||
|
Сообщение.Текст = ТекстСообщения;
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ВывестиИнформациюОВебхуке(Команда)
|
||||||
|
|
||||||
|
Ответ = ТелеграмМетодыВызовСервера.GetWebhookInfo();
|
||||||
|
Если Ответ.Успех И ЗначениеЗаполнено(Ответ.Тело) Тогда
|
||||||
|
Для каждого ПараметрОтвета из Ответ.Тело["result"] Цикл
|
||||||
|
Сообщение = Новый СообщениеПользователю;
|
||||||
|
Сообщение.Текст = "" + ПараметрОтвета.Ключ + "=" + ПараметрОтвета.Значение;
|
||||||
|
Сообщение.Сообщить();
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЕсли
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|||||||
@@ -2,82 +2,115 @@
|
|||||||
|
|
||||||
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
|
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
|
||||||
|
|
||||||
|
РезультатЗапроса = Новый Структура();
|
||||||
|
РезультатЗапроса.Вставить("Успех", Ложь);
|
||||||
|
РезультатЗапроса.Вставить("Тело", Неопределено);
|
||||||
|
РезультатЗапроса.Вставить("Описание", "");
|
||||||
|
РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные);
|
||||||
|
|
||||||
|
Попытка
|
||||||
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
|
|
||||||
Если Параметры <> Неопределено Тогда
|
Если Параметры <> Неопределено Тогда
|
||||||
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
||||||
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
||||||
|
|
||||||
Ответ = Соединение.Получить(Запрос);
|
Ответ = Соединение.Получить(Запрос);
|
||||||
|
ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
|
||||||
|
|
||||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
РезультатЗапроса.Тело = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(),
|
||||||
Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
|
HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока));
|
||||||
Лог.Дата = ТекущаяДатаСеанса();
|
|
||||||
Лог.HTTPЗапрос = Запрос.АдресРесурса;
|
Если НЕ ДвоичныеДанные И РезультатЗапроса.Тело.Получить("description") <> Неопределено Тогда
|
||||||
Лог.HTTPОтвет = ?(ДвоичныеДанные,"Двоичные данные",
|
РезультатЗапроса.Описание = РезультатЗапроса.Тело["description"];
|
||||||
HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку()));
|
|
||||||
Лог.Записать();
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КодСостояния = Ответ.КодСостояния;
|
КодСостояния = Ответ.КодСостояния;
|
||||||
|
|
||||||
Если КодСостояния = 200 Тогда
|
Если КодСостояния = 200 Тогда
|
||||||
ТелоОтвета = ?(ДвоичныеДанные, Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ.ПолучитьТелоКакСтроку());
|
РезультатЗапроса.Успех = Истина;
|
||||||
Иначе
|
Иначе
|
||||||
ТелоОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ.ПолучитьТелоКакСтроку());
|
|
||||||
Описание = ?(ТелоОтвета.Получить("description") <> Неопределено, ТелоОтвета["description"], "");
|
|
||||||
|
|
||||||
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
||||||
СтрШаблон("Не удалось выполнить запрос. Код состояния = %1. %2", КодСостояния, Описание));
|
СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
|
||||||
ТелоОтвета = Неопределено;
|
РезультатЗапроса.Описание));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ТелоОтвета;
|
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||||
|
ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.GET, ТелоОтветаКакСтрока, КодСостояния);
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
РезультатЗапроса.Успех = Ложь;
|
||||||
|
РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
|
||||||
|
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Возврат РезультатЗапроса;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Тело = Неопределено) Экспорт
|
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
|
||||||
|
|
||||||
|
РезультатЗапроса = Новый Структура();
|
||||||
|
РезультатЗапроса.Вставить("Успех", Ложь);
|
||||||
|
РезультатЗапроса.Вставить("Тело", Неопределено);
|
||||||
|
РезультатЗапроса.Вставить("Описание", "");
|
||||||
|
|
||||||
|
Попытка
|
||||||
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
|
|
||||||
Если Параметры <> Неопределено Тогда
|
Если Параметры <> Неопределено Тогда
|
||||||
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
Запрос = Новый HTTPЗапрос(АдресРесурса);
|
||||||
|
|
||||||
|
Если Данные <> Неопределено Тогда
|
||||||
|
Если Данные.Свойство("Разделитель") Тогда
|
||||||
|
Запрос.УстановитьТелоИзДвоичныхДанных(Данные.ДвоичныеДанные);
|
||||||
|
Запрос.Заголовки.Вставить("Content-Length", Формат(Данные.ДвоичныеДанные.Размер(), "ЧН=0; ЧГ="));
|
||||||
|
Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Данные.Разделитель);
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
Запрос.Заголовки.Вставить("Content-Type","application/json");
|
||||||
Если Тело <> Неопределено Тогда
|
|
||||||
Запрос.УстановитьТелоИзСтроки(ОбъектВСтрокуJson(Тело));
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
|
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
|
||||||
|
ТелоОтветаКакСтрока = Ответ.ПолучитьТелоКакСтроку();
|
||||||
|
|
||||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
ТелоДляОтвета = HttpОбщегоНазначения.СтрокаJsonВОбъект(ТелоОтветаКакСтрока);
|
||||||
Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
|
Если ТелоДляОтвета <> Неопределено Тогда
|
||||||
Лог.Дата = ТекущаяДатаСеанса();
|
РезультатЗапроса.Тело = ТелоДляОтвета;
|
||||||
Лог.HTTPЗапрос = Запрос.АдресРесурса;
|
РезультатЗапроса.Описание = ?(ТелоДляОтвета.Получить("description") <> Неопределено, ТелоДляОтвета["description"], "");
|
||||||
Лог.HTTPОтвет = HttpОбщегоНазначения.ФорматированныйJson(Ответ.ПолучитьТелоКакСтроку());
|
|
||||||
Лог.Записать();
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КодСостояния = Ответ.КодСостояния;
|
КодСостояния = Ответ.КодСостояния;
|
||||||
|
|
||||||
Если КодСостояния = 200 Тогда
|
Если КодСостояния = 200 Тогда
|
||||||
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
|
РезультатЗапроса.Успех = Истина;
|
||||||
Иначе
|
Иначе
|
||||||
Сообщение = Новый СообщениеПользователю;
|
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
||||||
Сообщение.Текст = "Не удалось выполнить запрос. Код состояния = " + КодСостояния;
|
СтрШаблон("Ошибка выполнения HTTP-запроса. Код состояния = %1. Описание:%2", КодСостояния,
|
||||||
Сообщение.Сообщить();
|
РезультатЗапроса.Описание));
|
||||||
ТелоОтвета = Неопределено;
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ТелоОтвета;
|
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
||||||
|
ЗалогироватьЗапрос(АдресРесурса, Перечисления.МетодHTTPЗапроса.POST, ТелоОтветаКакСтрока, КодСостояния);
|
||||||
|
КонецЕсли;
|
||||||
|
Исключение
|
||||||
|
РезультатЗапроса.Успех = Ложь;
|
||||||
|
РезультатЗапроса.Описание = "Исключение при выполнении HTTP-запроса: " + ОписаниеОшибки();
|
||||||
|
ЗаписьЖурналаРегистрации("HTTPСервисы.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, РезультатЗапроса.Описание);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
Возврат РезультатЗапроса;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СтрокаJsonВОбъект(СтрокаJson) Экспорт
|
Функция СтрокаJsonВОбъект(СтрокаJson) Экспорт
|
||||||
|
|
||||||
|
Если НЕ ЗначениеЗаполнено(СтрокаJson) Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
ЧтениеJSON.УстановитьСтроку(СтрокаJson);
|
ЧтениеJSON.УстановитьСтроку(СтрокаJson);
|
||||||
Попытка
|
Попытка
|
||||||
@@ -95,6 +128,11 @@
|
|||||||
|
|
||||||
Функция ОбъектВСтрокуJson(Объект) Экспорт
|
Функция ОбъектВСтрокуJson(Объект) Экспорт
|
||||||
|
|
||||||
|
Если Объект = Неопределено Тогда
|
||||||
|
Возврат "";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
ЗаписьJSON = Новый ЗаписьJSON;
|
ЗаписьJSON = Новый ЗаписьJSON;
|
||||||
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);
|
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(, Символы.Таб);
|
||||||
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
|
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
|
||||||
@@ -150,7 +188,6 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|
||||||
Функция АдресРесурсаСПараметрами(АдресРесурса, Параметры)
|
Функция АдресРесурсаСПараметрами(АдресРесурса, Параметры)
|
||||||
|
|
||||||
Если Параметры.Количество() = 0 Тогда
|
Если Параметры.Количество() = 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", ИдЧата, СообщениеДляОтправки);
|
ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки);
|
||||||
АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage");
|
АдресРесурса = АдресРесурсаПоИмениМетода("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(ИдДокумента);
|
Ответ = ТелеграмМетодыВызовСервера.GetFile(ИдДокумента);
|
||||||
|
|
||||||
Если Ответ = Неопределено Тогда
|
Если Ответ.Успех И Ответ.Тело.Получить("result") <> Неопределено Тогда
|
||||||
Возврат Ответ;
|
Возврат ПолучитьФайлССервераТелеграм(Ответ.Тело["result"]["file_path"]);
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
ДанныеФайла = HttpОбщегоНазначения.СтрокаJsonВОбъект(Ответ);
|
|
||||||
|
|
||||||
//Если ДанныеФайла.Получить("ok") <> Неопределено Тогда
|
|
||||||
// Если ДанныеФайла["ok"] И ДанныеФайла.Получить["result"] <> Неопределено Тогда
|
|
||||||
// ПутьКФайлуНаСервереТелеграм = ДанныеФайла["result"]["file_path"];
|
|
||||||
// Возврат ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервереТелеграм);
|
|
||||||
// Иначе
|
|
||||||
// ЗаписьЖурналаРегистрации("Телеграм.Ошибка", УровеньЖурналаРегистрации.Ошибка,,,
|
|
||||||
// СтрШаблон("Не удалось получить файл по id. Код ошибки %1, описание: %2", , ДанныеФайла["error_code"],
|
|
||||||
// ДанныеФайла["description"]));
|
|
||||||
// КонецЕсли;
|
|
||||||
//КонецЕсли;
|
|
||||||
|
|
||||||
Если ДанныеФайла.Получить("result") <> Неопределено Тогда
|
|
||||||
Возврат ПолучитьФайлССервераТелеграм(ДанныеФайла["result"]["file_path"]);
|
|
||||||
Иначе
|
Иначе
|
||||||
Возврат Неопределено;
|
Возврат Неопределено;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
@@ -251,6 +251,7 @@
|
|||||||
<CommonModule>ТелеграмОбщегоНазначения</CommonModule>
|
<CommonModule>ТелеграмОбщегоНазначения</CommonModule>
|
||||||
<CommonModule>ТелеграмПовторноеИспользование</CommonModule>
|
<CommonModule>ТелеграмПовторноеИспользование</CommonModule>
|
||||||
<CommonModule>ТелеграмРегламент</CommonModule>
|
<CommonModule>ТелеграмРегламент</CommonModule>
|
||||||
|
<CommonModule>РаботаСФайламиКлиентСервер</CommonModule>
|
||||||
<HTTPService>HTTPСервис_Telegram</HTTPService>
|
<HTTPService>HTTPСервис_Telegram</HTTPService>
|
||||||
<ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob>
|
<ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob>
|
||||||
<Constant>ТелеграмТокен</Constant>
|
<Constant>ТелеграмТокен</Constant>
|
||||||
@@ -261,6 +262,7 @@
|
|||||||
<Catalog>ТелеграмСообщение</Catalog>
|
<Catalog>ТелеграмСообщение</Catalog>
|
||||||
<Catalog>ТелеграмДокумент</Catalog>
|
<Catalog>ТелеграмДокумент</Catalog>
|
||||||
<Document>ЛогHttpЗапроса</Document>
|
<Document>ЛогHttpЗапроса</Document>
|
||||||
|
<Enum>МетодHTTPЗапроса</Enum>
|
||||||
<DataProcessor>РаботаССообщениями</DataProcessor>
|
<DataProcessor>РаботаССообщениями</DataProcessor>
|
||||||
<InformationRegister>ТелеграмСообщения</InformationRegister>
|
<InformationRegister>ТелеграмСообщения</InformationRegister>
|
||||||
</ChildObjects>
|
</ChildObjects>
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||||
<DefaultObjectForm>Document.ЛогHttpЗапроса.Form.ФормаДокумента</DefaultObjectForm>
|
<DefaultObjectForm>Document.ЛогHttpЗапроса.Form.ФормаДокумента</DefaultObjectForm>
|
||||||
<DefaultListForm/>
|
<DefaultListForm>Document.ЛогHttpЗапроса.Form.ФормаСписка</DefaultListForm>
|
||||||
<DefaultChoiceForm/>
|
<DefaultChoiceForm/>
|
||||||
<AuxiliaryObjectForm/>
|
<AuxiliaryObjectForm/>
|
||||||
<AuxiliaryListForm/>
|
<AuxiliaryListForm/>
|
||||||
@@ -164,7 +164,91 @@
|
|||||||
<DataHistory>Use</DataHistory>
|
<DataHistory>Use</DataHistory>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Attribute>
|
</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>
|
||||||
|
<Form>ФормаСписка</Form>
|
||||||
</ChildObjects>
|
</ChildObjects>
|
||||||
</Document>
|
</Document>
|
||||||
</MetaDataObject>
|
</MetaDataObject>
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
<UsePostingMode>Auto</UsePostingMode>
|
<UsePostingMode>Auto</UsePostingMode>
|
||||||
<RepostOnWrite>true</RepostOnWrite>
|
<RepostOnWrite>true</RepostOnWrite>
|
||||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||||
|
<Events>
|
||||||
|
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||||
|
</Events>
|
||||||
<ChildItems>
|
<ChildItems>
|
||||||
<InputField name="Номер" id="1">
|
<InputField name="Номер" id="1">
|
||||||
<DataPath>Объект.Number</DataPath>
|
<DataPath>Объект.Number</DataPath>
|
||||||
@@ -19,6 +22,12 @@
|
|||||||
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
<ContextMenu name="ДатаКонтекстноеМеню" id="5"/>
|
||||||
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
<ExtendedTooltip name="ДатаРасширеннаяПодсказка" id="6"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
|
<InputField name="Метод" id="18">
|
||||||
|
<DataPath>Объект.Метод</DataPath>
|
||||||
|
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
|
||||||
|
<ContextMenu name="МетодКонтекстноеМеню" id="19"/>
|
||||||
|
<ExtendedTooltip name="МетодРасширеннаяПодсказка" id="20"/>
|
||||||
|
</InputField>
|
||||||
<UsualGroup name="HTTP" id="13">
|
<UsualGroup name="HTTP" id="13">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<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>
|
</Method>
|
||||||
</ChildObjects>
|
</ChildObjects>
|
||||||
</URLTemplate>
|
</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>
|
</ChildObjects>
|
||||||
</HTTPService>
|
</HTTPService>
|
||||||
</MetaDataObject>
|
</MetaDataObject>
|
||||||
@@ -2,28 +2,30 @@
|
|||||||
Функция ШаблонURL1PostGetUpdate(Запрос)
|
Функция ШаблонURL1PostGetUpdate(Запрос)
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Лог = Неопределено;
|
|
||||||
Если Константы.ЛогироватьHttpЗапросы.Получить() Тогда
|
|
||||||
Лог = Документы.ЛогHttpЗапроса.СоздатьДокумент();
|
|
||||||
Лог.Дата = ТекущаяДатаСеанса();
|
|
||||||
ТелоЗапросаДляЛогов = HttpОбщегоНазначения.ФорматированныйJson(Запрос.ПолучитьТелоКакСтроку());
|
|
||||||
Лог.HTTPЗапрос = ТелоЗапросаДляЛогов;
|
|
||||||
КонецЕсли;
|
|
||||||
ТелеграмОбщегоНазначения.ОбработатьИСохранитьОбновленияТелеграм(Запрос.ПолучитьТелоКакСтроку());
|
ТелеграмОбщегоНазначения.ОбработатьИСохранитьОбновленияТелеграм(Запрос.ПолучитьТелоКакСтроку());
|
||||||
Ответ = 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">CommonForm.ТелеграмВебХук</xr:Item>
|
||||||
<xr:Item xsi:type="xr:MDObjectRef">Constant.ЛогироватьHttpЗапросы</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">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">Catalog.ТелеграмДокумент</xr:Item>
|
||||||
|
<xr:Item xsi:type="xr:MDObjectRef">c3c88554-5bc5-41b7-ae33-7a29b983d784</xr:Item>
|
||||||
</Content>
|
</Content>
|
||||||
</Properties>
|
</Properties>
|
||||||
<ChildObjects/>
|
<ChildObjects/>
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<VERSION>1</VERSION>
|
<VERSION>2</VERSION>
|
||||||
|
|||||||
Reference in New Issue
Block a user