1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-11-28 09:08:38 +02:00

B24: Работа с хранилищем файлов

This commit is contained in:
Anton Titovets 2024-06-19 10:08:31 +03:00
parent 2297b94956
commit 2cf6ab8506
3 changed files with 231 additions and 4 deletions

View File

@ -396,7 +396,7 @@
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Фильтра - Структура из КлючИЗначение - Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач) - filter
// Фильтр - Структура из КлючИЗначение - Структура отбора задач (см. ПолучитьСтруктуруФильтраЗадач) - filter
// Отступ - Число, Строка - Отступ от начала списка для полчения задач > 50 шт. рекурсивно - offset
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
@ -728,13 +728,18 @@
// Получить структуру фильтра задач
// Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруФильтраЗадач() Экспорт
Функция ПолучитьСтруктуруФильтраЗадач(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/tasks/tasks_task_list.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор задачи>");
СтруктураФильтра.Вставить("PARENT_ID" , "<идентификатор родительской задачи>");
@ -764,6 +769,12 @@
СтруктураФильтра.Вставить("STATUS"
, "<статус для сортировки. Аналогичен REAL_STATUS, но имеет дополнительно три мета-статуса>");
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураФильтра;
@ -772,19 +783,30 @@
// Получить структуру фильтра комментариев
// Возвращает структуру полей для фильтрации комментариев в методе ПолучитьСписокКомментариевЗадачи
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруФильтраКомментариев() Экспорт
Функция ПолучитьСтруктуруФильтраКомментариев(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/getlist.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор комментария>");
СтруктураФильтра.Вставить("AUTHOR_ID " , "<идентификатор автора комментария>");
СтруктураФильтра.Вставить("AUTHOR_NAME ", "<имя автора>");
СтруктураФильтра.Вставить("POST_DATE " , "<дата публикации комментария>");
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураФильтра;
@ -792,6 +814,99 @@
#КонецОбласти
#Область Диск
// Получить список хранилищ
// Получает список доступных хранилищ файлов
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСписокХранилищ(Знач URL, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "disk.storage.getlist");
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Загрузить файл в хранилище.
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Наименование - Строка - Наименование файла с расширением для сохранения - title
// Файл - Строка, ДвоичныеДанные - Файл для загрузки - file
// IDХранилища - Строка - Идентификатор хранилища для загрузки - storage
// Доступы - Строка - Массив доступов по задачам, если необходимо - rights
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ЗагрузитьФайлВХранилище(Знач URL
, Знач Наименование
, Знач Файл
, Знач IDХранилища = ""
, Знач Доступы = ""
, Знач Токен = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDХранилища);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
Если ЗначениеЗаполнено(IDХранилища) Тогда
Метод = "disk.storage.uploadfile";
Иначе
КонецЕсли;
ДанныеФайла = Новый Структура("NAME", Наименование);
СодержимоеФайла = Новый Соответствие();
СодержимоеФайла.Вставить(Наименование, Файл);
Параметры = НормализоватьАвторизацию(URL, Токен, Метод);
OPI_Инструменты.ДобавитьПоле("data" , ДанныеФайла, "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("rights", Доступы , "Массив" , Параметры);
OPI_Инструменты.ДобавитьПоле("id" , IDХранилища, "Строка" , Параметры);
МассивФайла = НормализоватьФайлы(СодержимоеФайла);
МассивФайла.Добавить(Наименование);
Если Не МассивФайла.Количество() = 0 Тогда
Параметры.Вставить("fileContent", МассивФайла);
КонецЕсли;
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Удалить файл
// Удаляет файл по ID
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDФайла - Строка, Число - Идентификатор удаляемого файла - fileid
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция УдалитьФайл(Знач URL, Знач IDФайла, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "disk.file.delete");
OPI_Инструменты.ДобавитьПоле("id", IDФайла, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс

View File

@ -225,6 +225,7 @@
НовыйТест(ТаблицаТестов, "Б24_СерверноеВремя" , "Серверное время" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_РаботаСНовостями" , "Работа с новостями" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_РаботаСЗадачами" , "Работа с задачами" , Битрикс);
НовыйТест(ТаблицаТестов, "Б24_РаботаСДиском" , "Работа с диском" , Битрикс);
Возврат ТаблицаТестов;

View File

@ -3333,6 +3333,21 @@
КонецПроцедуры
Процедура Б24_РаботаСДиском() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture2" , ПараметрыТеста);
Bitrix24_ПолучитьСписокХранилищ(ПараметрыТеста);
Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыТеста);
Bitrix24_УдалитьФайл(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@ -3775,6 +3790,16 @@
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["tasks"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_БитриксХранилища(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).ИмеетТип("Массив");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["total"]).Заполнено();
КонецПроцедуры
Процедура Проверка_БитриксФайл(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["ID"]).Заполнено();
КонецПроцедуры
#КонецОбласти
#Область АтомарныеТесты
@ -6268,6 +6293,92 @@
КонецПроцедуры
Процедура Bitrix24_ПолучитьСписокХранилищ(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
Результат = OPI_Bitrix24.ПолучитьСписокХранилищ(URL);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокХранилищ (хук)", "Bitrix24");
Проверка_БитриксХранилища(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
Результат = OPI_Bitrix24.ПолучитьСписокХранилищ(URL, Токен);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокХранилищ", "Bitrix24");
Проверка_БитриксХранилища(Результат);
КонецПроцедуры
Процедура Bitrix24_ЗагрузитьФайлВХранилище(ПараметрыФункции)
Наименование1 = Строка(Новый УникальныйИдентификатор) + ".jpg";
Наименование2 = Строка(Новый УникальныйИдентификатор) + ".jpg";
Картинка1 = ПараметрыФункции["Picture"];
Картинка2 = ПараметрыФункции["Picture2"];
IDПриемника = 3;
URL = ПараметрыФункции["Bitrix24_URL"];
Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование1, Картинка1, IDПриемника);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВХранилище (хук)", "Bitrix24");
Проверка_БитриксФайл(Результат); // SKIP
IDФайла = Результат["result"]["ID"]; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookFileID", IDФайла); // SKIP
ПараметрыФункции.Вставить("Bitrix24_HookFileID", IDФайла); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
Результат = OPI_Bitrix24.ЗагрузитьФайлВХранилище(URL, Наименование2, Картинка2, IDПриемника, , Токен);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайлВХранилище", "Bitrix24");
Проверка_БитриксФайл(Результат);
IDФайла = Результат["result"]["ID"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_FileID", IDФайла);
ПараметрыФункции.Вставить("Bitrix24_FileID", IDФайла);
КонецПроцедуры
Процедура Bitrix24_УдалитьФайл(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
IDФайла = ПараметрыФункции["Bitrix24_HookFileID"];
Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьФайл (хук)", "Bitrix24");
Проверка_БитриксИстина(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
IDФайла = ПараметрыФункции["Bitrix24_FileID"];
Результат = OPI_Bitrix24.УдалитьФайл(URL, IDФайла, Токен);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьФайл", "Bitrix24");
Проверка_БитриксИстина(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти