1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-24 19:49:22 +02:00

Дополнение словаря

This commit is contained in:
Anton Titovets
2025-04-26 09:46:26 +03:00
parent 9940d227d8
commit 0f7422778a
14 changed files with 7908 additions and 7782 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -602,7 +602,7 @@
.ДобавитьДанныеRelated(Описание, "application/json; charset=UTF-8");
Для Каждого Файл Из СоответствиеФайла Цикл
HTTPКлиент.ДобавитьДанныеRelated(Файл.Ключ, Файл.Значение)
HTTPКлиент.ДобавитьДанныеRelated(Файл.Ключ, Файл.Значение);
КонецЦикла;
Ответ = HTTPКлиент.ОбработатьЗапрос(Метод).ВернутьОтветКакJSONКоллекцию(Истина, Истина);

View File

@@ -604,11 +604,12 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьТекстовоеСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач Текст, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
@@ -642,12 +643,13 @@
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
СоответствиеФайла = Новый Соответствие();
СоответствиеФайла.Вставить(СтрШаблон("file|%1", ИмяФайла), Файл);
@@ -668,7 +670,7 @@
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// URLФайла - Строка, - URL файла для отправки - url
// URLФайла - Строка - URL файла для отправки - url
// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename
// Описание - Строка - Текст сообщения под файлом - caption
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
@@ -682,13 +684,14 @@
, Знач Описание = ""
, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("urlFile" , URLФайла , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("urlFile" , URLФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendFileByUrl");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
@@ -720,6 +723,7 @@
, Знач МножественныйВыбор = Ложь
, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
МассивВариантов = Новый Массив;
@@ -729,11 +733,11 @@
МассивВариантов.Добавить(Новый Структура("optionName", Вариант));
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("options" , МассивВариантов , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("multipleAnswers", МножественныйВыбор, "Булево" , Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого , Строка_ , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendPoll");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
@@ -850,11 +854,12 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ИзменитьТекстСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "editMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
@@ -910,13 +915,14 @@
, Знач Отчество = ""
, Знач Компания = "") Экспорт
Строка_ = "Строка";
Контакт = Новый Структура;
OPI_Инструменты.ДобавитьПоле("phoneContact", Телефон , "Число" , Контакт);
OPI_Инструменты.ДобавитьПоле("firstName" , Имя , "Строка", Контакт);
OPI_Инструменты.ДобавитьПоле("middleName" , Фамилия , "Строка", Контакт);
OPI_Инструменты.ДобавитьПоле("lastName" , Отчество, "Строка", Контакт);
OPI_Инструменты.ДобавитьПоле("company" , Компания, "Строка", Контакт);
OPI_Инструменты.ДобавитьПоле("phoneContact", Телефон , "Число", Контакт);
OPI_Инструменты.ДобавитьПоле("firstName" , Имя , Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("middleName" , Фамилия , Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("lastName" , Отчество, Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("company" , Компания, Строка_, Контакт);
Возврат Контакт;

View File

@@ -522,34 +522,7 @@
Иначе
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь);
Прервать;
КонецЦикла;
КонецЕсли;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
КонецЕсли;
ОбработатьПараметрКоллекцию(ТекущийТип, ТекущийПараметр, ТекущийКлюч);
КонецЕсли;
@@ -561,6 +534,39 @@
КонецФункции
Процедура ОбработатьПараметрКоллекцию(Знач ТекущийТип, ТекущийПараметр, ТекущийКлюч)
Если ТекущийТип = Тип("Структура") Или ТекущийТип = Тип("Соответствие") Тогда
Если OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTES") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ТекущийКлюч = "BYTES";
Иначе
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
ТекущийПараметр = ОбработатьПараметр(ТекущееЗначение, Ложь);
Прервать;
КонецЦикла;
КонецЕсли;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийКлюч = "TEXT";
КонецЕсли;
КонецПроцедуры
Функция ОбработатьСтруктуруBlob(Знач Значение)
Bytea_ = "BYTES";

View File

@@ -721,8 +721,6 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, "Число" , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура , "Коллекция", Параметры);

View File

@@ -40,6 +40,9 @@
// BSLLS:CommentedCode-off
// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:UsingHardcodeNetworkAddress-off
// BSLLS:UnreachableCode-off
// BSLLS:UnusedLocalMethod-off
// BSLLS:NestedFunctionInParameters-off
//@skip-check undefined-variable
//@skip-check wrong-string-literal-content
@@ -14899,7 +14902,7 @@
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаймслотыFBO", "Ozon");
OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат);
//OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат);
КонецПроцедуры

View File

@@ -40,6 +40,9 @@
// BSLLS:CommentedCode-off
// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:UsingHardcodeNetworkAddress-off
// BSLLS:UnreachableCode-off
// BSLLS:UnusedLocalMethod-off
// BSLLS:NestedFunctionInParameters-off
//@skip-check undefined-variable
//@skip-check wrong-string-literal-content
@@ -1542,10 +1545,6 @@
CLI_Ozon_ПолучитьСписокКластеров(ПараметрыТеста);
CLI_Ozon_ПолучитьСписокСкладовОтгрузки(ПараметрыТеста);
// TODO: Вернуть позже
Возврат;
CLI_Ozon_СоздатьЧерновикЗаявкиFBO(ПараметрыТеста);
CLI_Ozon_ПолучитьЧерновикЗаявкиFBO(ПараметрыТеста);
CLI_Ozon_ПолучитьСтруктуруДопПолейОтправления(ПараметрыТеста);
@@ -10858,7 +10857,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ozon", "ПолучитьТаймслотыFBO", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьТаймслотыFBO", "Ozon");
OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат);
//OPI_ПолучениеДанныхТестов.Проверка_ОзонТаймслоты(Результат);
КонецПроцедуры

View File

@@ -24,23 +24,19 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UsingHardcodePath-off
// BSLLS:Typo-off
// BSLLS:DeprecatedMessage-off
// BSLLS:UnusedLocalVariable-off
// BSLLS:UsingServiceTag-off
// BSLLS:ExecuteExternalCodeInCommonModule-off
// BSLLS:DuplicateStringLiteral-off
// BSLLS:MagicNumber-off
// BSLLS:UsingHardcodeNetworkAddress-off
// BSLLS:NumberOfOptionalParams-off
//@skip-check use-non-recommended-method
//@skip-check module-unused-local-variable
//@skip-check method-too-many-params
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check undefined-function-or-procedure
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check use-non-recommended-method
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"

View File

@@ -32,6 +32,7 @@
// BSLLS:LineLength-off
// BSLLS:QueryParseError-off
// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:NumberOfParams-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions

View File

@@ -2463,9 +2463,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@@ -336,9 +336,11 @@
Значение_ = СтрШаблон("%1.%2", СтрСоединить(МассивЧастей), ДробнаяЧасть);
КонецЕсли;
Значение = Число(Значение_);
// BSLLS:TryNumber-off
Значение = Число(Значение_);
// BSLLS:TryNumber-on
Исключение
Возврат;
КонецПопытки;
@@ -363,10 +365,15 @@
Иначе
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Значение, Истина);
ПолучитьДвоичныеДанные(Значение, Истина);
// BSLLS:MissingTemporaryFileDeletion-off
//@skip-check missing-temporary-file-deletion
Путь = ПолучитьИмяВременногоФайла(Расширение);
// BSLLS:MissingTemporaryFileDeletion-on
Значение.Записать(Путь);
СтруктураВозврата.Вставить("Путь" , Путь);

View File

@@ -30,6 +30,8 @@
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
// BSLLS:ExportVariables-off
// BSLLS:OneStatementPerLine-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
@@ -37,6 +39,7 @@
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
//@skip-check doc-comment-collection-item-type
//@skip-check object-module-export-variable
// #Если Не Клиент Тогда
@@ -44,59 +47,58 @@
// Обработка
Перем Инициализирован;
Перем Ошибка Экспорт;
Перем Лог;
Перем Инициализирован; // Признак, что обязательная функция Инициализировать() была вызвана
Перем Ошибка Экспорт; // Признак ошибки выполнения для пропуска оставшихся действий в цепочке
Перем Лог; // Массив сообщений о действиях внутри обработки
// Запрос
Перем Запрос;
Перем Соединение;
Перем Настройки;
Перем Запрос; // Объект HTTPЗапрос
Перем Соединение; // Объект HTTPСоединение
Перем Настройки; // Структура дополнительных настроек
Перем ЗапросURL;
Перем ЗапросСервер;
Перем ЗапросПорт;
Перем ЗапросАдрес;
Перем ЗапросАдресПолный;
Перем ЗапросСекция;
Перем ЗапросЗащищенное;
Перем ЗапросДомен;
Перем ЗапросURL; // URL запроса
Перем ЗапросСервер; // Сервер из URL запроса
Перем ЗапросПорт; // Порт из URL запроса или по умолчанию
Перем ЗапросАдрес; // Путь из URL запроса
Перем ЗапросАдресПолный; // Путь с параметрами и секцией из URL запроса
Перем ЗапросСекция; // Секция в URL, если присутствует
Перем ЗапросЗащищенное; // Признак использования HTTPS
Перем ЗапросДомен; // Домен из URL запроса
Перем ЗапросМетод;
Перем ЗапросПараметрыURL;
Перем ЗапросТело;
Перем ЗапросЗаголовки;
Перем ЗапросПользователь;
Перем ЗапросПароль;
Перем ЗапросТаймаут;
Перем ЗапросПрокси;
Перем ЗапросВыходнойФайл;
Перем ЗапросФайлТела;
Перем ЗапросПотокТела;
Перем ЗапросЗаписьДанных;
Перем ЗапросТипДанных;
Перем ЗапросТипУстановленВручную;
Перем ФайлТелаВременный;
Перем ЗапросМетод; // Используемый метод HTTP
Перем ЗапросПараметрыURL; // Структура параметров URL
Перем ЗапросТело; // Данные тела запроса
Перем ЗапросЗаголовки; // Соответствие заголовков запроса
Перем ЗапросПользователь; // Пользователь для базовой авторизации
Перем ЗапросПароль; // Пароль для базовой авторизации
Перем ЗапросТаймаут; // Таймаут запроса
Перем ЗапросПрокси; // Настройки прокси запроса
Перем ЗапросВыходнойФайл; // Путь к файлу для сохранения результата запроса
Перем ЗапросФайлТела; // Путь к файлу с телом запроса
Перем ЗапросПотокТела; // Поток тела запроса
Перем ЗапросЗаписьДанных; // Запись данных тела запроса
Перем ЗапросТипДанных; // MIME тип для Content-Type
Перем ЗапросТипУстановленВручную; // Признак отключения автоматического определения Content-Type
Перем ФайлТелаВременный; // Признак удаления файла тела, если он был создан автоматически
// AWS
Перем AWS4Использовать;
Перем AWS4Данные;
Перем AWS4Использовать; // Признак использования AWS4 авторизации
Перем AWS4Данные; // Структура учетных данных
// Ответ
Перем Ответ;
Перем ОтветКодСостояния;
Перем ОтветТело;
Перем ОтветЗаголовки;
Перем Ответ; // Объект HTTPОтвет
Перем ОтветКодСостояния; // Код состояния ответа
Перем ОтветТело; // Данные тела ответа
Перем ОтветЗаголовки; // Соответствие заголовков ответа
// Multipart
Перем Multipart;
Перем Boundary;
Перем РазделительСтрок;
Перем Multipart; // Признак установки тела в формате Multipart
Перем Boundary; // Boundary для разделения частей тела
Перем РазделительСтрок; // Разделитель строк тела
#КонецОбласти
@@ -156,28 +158,28 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если ЗначениеЗаполнено(URL) Тогда
Если ЗначениеЗаполнено(URL) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_Инструменты.ВернутьУправляющиеПоследовательности(URL);
Если ПолучитьНастройку("КодировкаURL") Тогда
OPI_Инструменты.КодироватьURLВURL(URL);
КонецЕсли;
ЗапросURL = URL;
ДобавитьЛог("УстановитьURL: Разбиение запроса на составные части");
Иначе
ДобавитьЛог("УстановитьURL: URL пуст - пропуск");
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_Инструменты.ВернутьУправляющиеПоследовательности(URL);
Если ПолучитьНастройку("КодировкаURL") Тогда
OPI_Инструменты.КодироватьURLВURL(URL);
КонецЕсли;
Возврат РазбитьURL();
ЗапросURL = URL;
ДобавитьЛог("УстановитьURL: Разбиение запроса на составные части");
Иначе
ДобавитьЛог("УстановитьURL: URL пуст - пропуск");
КонецЕсли;
Возврат РазбитьURL();
Исключение
Возврат Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
@@ -197,7 +199,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Структура; КонецЕсли;
ТекстОшибки = "УстановитьПараметрыURL: Переданные параметры не являются коллекцией ключ/значение";
@@ -224,7 +226,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не ЗначениеЗаполнено(Значение) Тогда
ЗапросВыходнойФайл = Неопределено;
Возврат ЭтотОбъект;
@@ -241,7 +243,7 @@
КонецФункции
// Установить тип данных
// Установить тип данных !NOCLI
// Устанавливает Content-Type запроса
//
// Примечание:
@@ -256,7 +258,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ДобавитьЛог("УстановитьТипДанных: Установка значения");
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
@@ -296,11 +298,22 @@
#Область Настройки
// Использовать кодировку
// Устанавливает кодировку тела запроса
//
// Примечание:
// По умолчанию используется UTF-8
//
// Параметры:
// Кодировка - Строка - Название кодировки - enc
//
// Возвращаемое значение:
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
Функция ИспользоватьКодировку(Знач Кодировка) Экспорт
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ДобавитьЛог("ИспользоватьКодировку: Установка значения");
OPI_ПреобразованиеТипов.ПолучитьСтроку(Кодировка);
@@ -315,11 +328,22 @@
КонецФункции
// Использовать сжатие gzip
// Включает или отключает заголовок получения данных от сервера в сжатом виде
//
// Примечание:
// По умлчанию ответ от сервера запрашивается со сжатием gzip
//
// Параметры:
// Флаг - Булево - Признак использования gzip - gzip
//
// Возвращаемое значение:
// ОбработкаОбъект.OPI_HTTPКлиент - Этот же объект обработки
Функция ИспользоватьСжатиеGzip(Знач Флаг) Экспорт
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ДобавитьЛог("ИспользоватьСжатиеGzip: Установка значения");
OPI_ПреобразованиеТипов.ПолучитьБулево(Флаг);
@@ -351,7 +375,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ОтменитьЗаписьMultipart();
@@ -400,7 +424,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ОтменитьЗаписьMultipart();
@@ -441,7 +465,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ОтменитьЗаписьMultipart();
@@ -481,7 +505,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
ОтменитьЗаписьMultipart();
@@ -537,7 +561,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьБулево(ИспользоватьФайл);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Вид);
@@ -545,14 +569,17 @@
Multipart = Истина;
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
РазделительСтрок = Символы.ВК + Символы.ПС;
Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса");
ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2; charset=%3", Вид, Boundary, Кодировка);
Кодировка = ПолучитьНастройку("КодировкаТелаЗапроса");
ЗапросТипДанных = СтрШаблон("multipart/%1; boundary=%2", Вид, Boundary);
Если ИспользоватьФайл Тогда
ДобавитьЛог("НачатьЗаписьТелаMultipart: Создание временного файла");
// BSLLS:MissingTemporaryFileDeletion-off
ЗапросФайлТела = ПолучитьИмяВременногоФайла();
// BSLLS:MissingTemporaryFileDeletion-on
ФайлТелаВременный = Истина;
ЗапросЗаписьДанных = Новый ЗаписьДанных(ЗапросФайлТела
, Кодировка
@@ -603,8 +630,8 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлMultipart: Не инициализирована запись Multipart") КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлMultipart: Не инициализирована запись Multipart"); КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные);
@@ -653,7 +680,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не Multipart Тогда Возврат Ошибка("ДобавитьПолеMultipart: Не инициализирована запись Multipart") КонецЕсли;
ТипЗначения = ТипЗнч(Значение);
@@ -712,8 +739,8 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлRelated: Не инициализирована запись Multipart") КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не Multipart Тогда Возврат Ошибка("ДобавитьФайлRelated: Не инициализирована запись Multipart"); КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТипДанных);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧасти);
@@ -763,8 +790,8 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Если Не ЗначениеЗаполнено(Значение) Тогда Значение = Новый Соответствие; КонецЕсли;
ТекстОшибки = "УстановитьПараметрыURL: Переданные параметры не являются коллекцией ключ/значение";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки);
@@ -803,7 +830,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пользователь);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Пароль);
@@ -834,7 +861,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
Строка_ = "Строка";
AWS4Использовать = Истина;
@@ -874,12 +901,12 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
OPI_ПреобразованиеТипов.ПолучитьБулево(ВыполнитьСразу);
ЗапросМетод = Метод;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
ДобавитьЛог("ОбработатьЗапрос: Формирование запроса");
Если СформироватьЗапрос().Ошибка Тогда Возврат ЭтотОбъект КонецЕсли;
@@ -913,7 +940,7 @@
Попытка
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу() Тогда Возврат ЭтотОбъект; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
ЗапросМетод = Метод;
@@ -981,7 +1008,7 @@
OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно);
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли;
Возврат Ответ;
@@ -998,7 +1025,7 @@
// Произвольный - Ответ или этот же объект обработки
Функция ВернутьОтветКакJSONКоллекцию(Знач ВСоответствие = Истина, Знач ИсключениеПриОшибке = Ложь) Экспорт
Если ОстановитьРаботу(ИсключениеПриОшибке) Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу(ИсключениеПриОшибке) Тогда Возврат ЭтотОбъект; КонецЕсли;
Попытка
@@ -1040,7 +1067,7 @@
OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно);
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли;
ТелоСтрокой = ПолучитьТелоОтвета();
@@ -1061,7 +1088,7 @@
OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно);
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли;
ТелоСтрокой = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьТелоОтвета());
@@ -1082,7 +1109,7 @@
OPI_ПреобразованиеТипов.ПолучитьБулево(Принудительно);
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект КонецЕсли;
Если ОстановитьРаботу(ИсключениеПриОшибке) И Не Принудительно Тогда Возврат ЭтотОбъект; КонецЕсли;
ИмяФайлаТела = Ответ.ПолучитьИмяФайлаТела();
@@ -1422,7 +1449,8 @@
КонецЦикла;
КонецЕсли;
Возврат ЭтотОбъект;
КонецФункции
@@ -1550,47 +1578,47 @@
Процедура ОтменитьЗаписьMultipart()
Если Multipart Тогда
Если Не Multipart Тогда
Возврат;
КонецЕсли;
ДобавитьЛог("ОтменитьЗаписьMultipart: Удаление записанных данных");
Multipart = Ложь;
ДобавитьЛог("ОтменитьЗаписьMultipart: Удаление записанных данных");
Multipart = Ложь;
Попытка
ЗапросЗаписьДанных.Закрыть();
Исключение
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта");
КонецПопытки;
Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда
Попытка
УдалитьФайлы(ЗапросФайлТела);
ДобавитьЛог("ОтменитьЗаписьMultipart: Файл тела удален");
Попытка
ЗапросЗаписьДанных.Закрыть();
Исключение
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть запись. Возможно, она уже была закрыта");
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось удалить файл тела. Возможно, он уже был удален");
КонецПопытки;
Если ЗначениеЗаполнено(ЗапросФайлТела) Тогда
Иначе
Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда
Попытка
УдалитьФайлы(ЗапросФайлТела);
ДобавитьЛог("ОтменитьЗаписьMultipart: Файл тела удален");
ЗапросПотокТела.Закрыть();
Исключение
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось удалить файл тела. Возможно, он уже был удален");
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт");
КонецПопытки;
Иначе
Если ТипЗнч(ЗапросПотокТела) = Тип("ПотокВПамяти") Тогда
Попытка
ЗапросПотокТела.Закрыть();
Исключение
ДобавитьЛог("ОтменитьЗаписьMultipart: Не удалось закрыть поток. Возможно, он уже был закрыт");
КонецПопытки;
КонецЕсли;
КонецЕсли;
ЗапросЗаписьДанных = Неопределено;
ЗапросФайлТела = Неопределено;
КонецЕсли;
ЗапросЗаписьДанных = Неопределено;
ЗапросФайлТела = Неопределено;
КонецПроцедуры
Процедура ЗаписатьДвоичныеДанные(ЗаписьДанных, Знач ДвоичныеДанные)

View File

@@ -217,9 +217,10 @@
КонецЕсли;
ОкончаниеПротокола = СтрНайти(Домен, "://");
Слэши = 2;
Если ОкончаниеПротокола > 0 Тогда
Домен = Прав(Домен, СтрДлина(Домен) - (ОкончаниеПротокола + 2));
Домен = Прав(Домен, СтрДлина(Домен) - (ОкончаниеПротокола + Слэши));
КонецЕсли;
Если СтрНайти(Домен, ":") <> 0 Тогда
@@ -1081,18 +1082,6 @@
КонецПроцедуры
Функция ЭтоПереадресация(Знач Ответ)
Переадресация = 300;
Ошибка = 400;
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка И ЗначениеЗаполнено(
Ответ.Заголовки["Location"]);
Возврат ЭтоПереадресация;
КонецФункции
Функция ПреобразоватьПараметрВСтроку(Знач Значение)
Если ТипЗнч(Значение) = Тип("Массив") Тогда

View File

@@ -298,7 +298,7 @@
#Область Настройки
// Использовать кодировку
// Использовать кодировку !NOCLI
// Устанавливает кодировку тела запроса
//
// Примечание:
@@ -328,7 +328,7 @@
КонецФункции
// Использовать сжатие gzip
// Использовать сжатие gzip !NOCLI
// Включает или отключает заголовок получения данных от сервера в сжатом виде
//
// Примечание: