mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-04-17 12:06:34 +02:00
Airtable API
This commit is contained in:
parent
6bd119cd5c
commit
7d0545af17
@ -35,6 +35,35 @@
|
|||||||
|
|
||||||
#Область РаботаСБазами
|
#Область РаботаСБазами
|
||||||
|
|
||||||
|
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
||||||
@ -70,7 +99,90 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ФормированиеПолей
|
#Область РаботаСТаблицами
|
||||||
|
|
||||||
|
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область РаботаСПолями
|
||||||
|
|
||||||
|
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
||||||
|
|
||||||
|
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
||||||
|
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
|
ВызватьИсключение "Ошибка в данных описания поля";
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||||
|
+ База
|
||||||
|
+ "/tables/"
|
||||||
|
+ Таблица
|
||||||
|
+ "/fields/"
|
||||||
|
+ Поле;
|
||||||
|
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
|
||||||
|
Параметры = Новый Структура();
|
||||||
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
||||||
Возврат ОписаниеПримитовногоПоля(Наименование, "richText");
|
Возврат ОписаниеПримитовногоПоля(Наименование, "richText");
|
||||||
@ -103,13 +215,15 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей)
|
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
||||||
|
|
||||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
||||||
|
|
||||||
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
||||||
|
|
||||||
|
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
||||||
|
|
||||||
Возврат ОписаниеТаблицы;
|
Возврат ОписаниеТаблицы;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
@ -196,7 +196,9 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать базу" , АирТ);
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||||
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||||
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
|
@ -3476,18 +3476,100 @@
|
|||||||
Наименование = "Тестовая база";
|
Наименование = "Тестовая база";
|
||||||
|
|
||||||
МассивПолей = Новый Массив;
|
МассивПолей = Новый Массив;
|
||||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Автономер"));
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
|
||||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
||||||
|
|
||||||
|
ИмяТаблицы = "Тестовая таблица";
|
||||||
|
|
||||||
СоответствиеТаблиц = Новый Соответствие;
|
СоответствиеТаблиц = Новый Соответствие;
|
||||||
СоответствиеТаблиц.Вставить("Тестовая таблица", МассивПолей);
|
СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей);
|
||||||
|
|
||||||
Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц);
|
Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц);
|
||||||
|
|
||||||
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОБоте");
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазу");
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Заполнено();
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Заполнено();
|
||||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(Наименование);
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(ИмяТаблицы);
|
||||||
|
|
||||||
|
База = Результат["id"];
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Base", База);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ПолучитьТаблицыБазы(Токен, База);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаблицыБазы");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).Заполнено();
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).ИмеетТип("Массив");
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ПолучитьСписокБаз(Токен);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокБаз");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).Заполнено();
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).ИмеетТип("Массив");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура АТ_СоздатьТаблицу() Экспорт
|
||||||
|
|
||||||
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||||
|
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||||
|
|
||||||
|
МассивПолей = Новый Массив;
|
||||||
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
|
||||||
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
||||||
|
|
||||||
|
ИмяТаблицы = "Тестовая таблица 2";
|
||||||
|
Описание = "Новая таблица";
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.СоздатьТаблицу(Токен, База, ИмяТаблицы, МассивПолей, Описание);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||||
|
|
||||||
|
Таблица = Результат["id"];
|
||||||
|
ИмяТаблицы = "Тестовая таблица 2 (изм.)";
|
||||||
|
Описание = "Новая таблица (изм.)";
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Table", Таблица);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ИзменитьТаблицу(Токен, База, Таблица, ИмяТаблицы, Описание);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьТаблицу");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||||
|
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура АТ_СоздатьПоле() Экспорт
|
||||||
|
|
||||||
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||||
|
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||||
|
Таблица = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Table");
|
||||||
|
Имя = Строка(Новый УникальныйИдентификатор);
|
||||||
|
|
||||||
|
Поле = OPI_Airtable.ПолучитьПолеНомера(Имя);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.СоздатьПоле(Токен, База, Таблица, Поле);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьПоле");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
|
||||||
|
|
||||||
|
Поле = Результат["id"];
|
||||||
|
Имя = Имя + "(изм.)";
|
||||||
|
Описание = "Новое описание";
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.ИзменитьПоле(Токен, База, Таблица, Поле, Имя, Описание);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПоле");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user