mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-27 02:43:54 +02:00
Merge branch 'main' of https://github.com/Bayselonarrend/OpenIntegrations
This commit is contained in:
commit
99c02e7856
4
.github/workflows/oint_test_Airtable.yml
vendored
4
.github/workflows/oint_test_Airtable.yml
vendored
@ -91,6 +91,10 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
||||||
|
|
||||||
|
- name: Создать/Удалить записи
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
||||||
|
|
||||||
|
|
||||||
- name: Записать измененные данные
|
- name: Записать измененные данные
|
||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
|
4
.github/workflows/oint_test_full.yml
vendored
4
.github/workflows/oint_test_full.yml
vendored
@ -851,6 +851,10 @@ jobs:
|
|||||||
if: ${{ cancelled() }} == false
|
if: ${{ cancelled() }} == false
|
||||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
||||||
|
|
||||||
|
- name: Создать/Удалить записи
|
||||||
|
if: ${{ cancelled() }} == false
|
||||||
|
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
||||||
|
|
||||||
Encode:
|
Encode:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [Testing-Twitter]
|
needs: [Testing-Twitter]
|
||||||
|
@ -292,6 +292,128 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область РаботаСЗаписями
|
||||||
|
|
||||||
|
// Получить список записей
|
||||||
|
// Получает список записей выбранной таблицы
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен - token
|
||||||
|
// База - Строка - Идентификатор базы данных - base
|
||||||
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
|
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
|
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Параметры = Новый Структура();
|
||||||
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить запись
|
||||||
|
// Получает данные строки таблицы по идентификатору
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен - token
|
||||||
|
// База - Строка - Идентификатор базы данных - base
|
||||||
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
|
// Запись - Строка - Идентификатор записи в таблице - record
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
|
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Создать записи
|
||||||
|
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен - token
|
||||||
|
// База - Строка - Идентификатор базы данных - base
|
||||||
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
|
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
|
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
||||||
|
|
||||||
|
Параметры = Новый Структура();
|
||||||
|
ДобавитьОписаниеДанных(Данные, Параметры);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Удалить записи
|
||||||
|
// Удаляет одну или массив записей по идентификаторам
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен - token
|
||||||
|
// База - Строка - Идентификатор базы данных - base
|
||||||
|
// Таблица - Строка - Идентификатор таблицы - table
|
||||||
|
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||||
|
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
||||||
|
|
||||||
|
СтрокаЗаписей = "";
|
||||||
|
|
||||||
|
Для Каждого Запись Из Записи Цикл
|
||||||
|
СтрокаЗаписей = СтрокаЗаписей
|
||||||
|
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
||||||
|
+ "records[]="
|
||||||
|
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
@ -331,4 +453,24 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
||||||
|
|
||||||
|
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
||||||
|
|
||||||
|
МассивОтправки = Новый Массив;
|
||||||
|
|
||||||
|
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
||||||
|
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -3574,6 +3574,73 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура АТ_СоздатьУдалитьЗаписи() Экспорт
|
||||||
|
|
||||||
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||||
|
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||||
|
Таблица = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Table");
|
||||||
|
|
||||||
|
Числовой = 10;
|
||||||
|
Строчный = "Привет";
|
||||||
|
|
||||||
|
ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Числовой, Строчный);
|
||||||
|
ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Числовой, Строчный);
|
||||||
|
|
||||||
|
МассивУдаляемых = Новый Массив;
|
||||||
|
МассивОписаний = Новый Массив;
|
||||||
|
МассивОписаний.Добавить(ОписаниеСтроки1);
|
||||||
|
МассивОписаний.Добавить(ОписаниеСтроки2);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, МассивОписаний);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаписи");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(2);
|
||||||
|
|
||||||
|
Для Каждого Запись Из Результат["records"] Цикл
|
||||||
|
МассивУдаляемых.Добавить(Запись["id"]);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, ОписаниеСтроки1);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаписи (одна)");
|
||||||
|
|
||||||
|
ОдиночнаяЗапись = Результат["id"];
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ОдиночнаяЗапись).Заполнено(ОдиночнаяЗапись);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["createdTime"]).Заполнено();
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["fields"]["Номер"]).Равно(Числовой);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СокрЛП(Результат["fields"]["Строковое"])).Равно(Строчный);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ПолучитьЗапись(Токен, База, Таблица, ОдиночнаяЗапись);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗапись");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Равно(ОдиночнаяЗапись);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ПолучитьСписокЗаписей(Токен, База, Таблица);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокЗаписей");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(3);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(2);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, ОдиночнаяЗапись);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (одна)");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(1);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -200,6 +200,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||||
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
|
@ -184,11 +184,13 @@
|
|||||||
СтрокаПараметров = "?";
|
СтрокаПараметров = "?";
|
||||||
|
|
||||||
Для Каждого Параметр Из Параметры Цикл
|
Для Каждого Параметр Из Параметры Цикл
|
||||||
|
|
||||||
|
ЗначениеПараметра = ПреобразоватьПараметрВСтроку(Параметр.Значение);
|
||||||
|
|
||||||
СтрокаПараметров = СтрокаПараметров
|
СтрокаПараметров = СтрокаПараметров
|
||||||
+ Параметр.Ключ
|
+ Параметр.Ключ
|
||||||
+ "="
|
+ "="
|
||||||
+ КодироватьСтроку(Параметр.Значение,
|
+ ЗначениеПараметра
|
||||||
СпособКодированияСтроки.КодировкаURL)
|
|
||||||
+ "&";
|
+ "&";
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
@ -704,6 +706,21 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПреобразоватьПараметрВСтроку(Знач Значение)
|
||||||
|
|
||||||
|
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||||
|
Значение = СтрСоединить(Значение, ",");
|
||||||
|
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
Значение = "[" + Значение + "]";
|
||||||
|
Иначе
|
||||||
|
Значение = ЧислоВСтроку(Значение);
|
||||||
|
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Значение;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
||||||
|
|
||||||
Коллекция = ТипЗнч(Параметры) = Тип("Структура")
|
Коллекция = ТипЗнч(Параметры) = Тип("Структура")
|
||||||
|
BIN
data.json.gpg
BIN
data.json.gpg
Binary file not shown.
Loading…
Reference in New Issue
Block a user