mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-02-05 13:25:25 +02:00
Начало AirTable
This commit is contained in:
parent
8d89be74de
commit
6bd119cd5c
128
OPI/src/CommonModules/OPI_Airtable/Module.bsl
Normal file
128
OPI/src/CommonModules/OPI_Airtable/Module.bsl
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
// Библиотека: Airtable
|
||||||
|
// Команда CLI: Airtable
|
||||||
|
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
// Copyright (c) 2023 Anton Tsitavets
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
|
// BSLLS:IncorrectLineBreak-off
|
||||||
|
|
||||||
|
// Раскомментировать, если выполняется OneScript
|
||||||
|
// #Использовать "../../tools"
|
||||||
|
|
||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
#Область РаботаСБазами
|
||||||
|
|
||||||
|
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
||||||
|
|
||||||
|
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
||||||
|
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
||||||
|
|
||||||
|
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
URL = "https://api.airtable.com/v0/meta/bases";
|
||||||
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
МассивТаблиц = Новый Массив;
|
||||||
|
|
||||||
|
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
||||||
|
|
||||||
|
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
||||||
|
МассивТаблиц.Добавить(Описание);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область ФормированиеПолей
|
||||||
|
|
||||||
|
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
||||||
|
Возврат ОписаниеПримитовногоПоля(Наименование, "richText");
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
||||||
|
|
||||||
|
СтруктураОпций = Новый Структура("precision", Точность);
|
||||||
|
Возврат ОписаниеПримитовногоПоля(Наименование, "number", СтруктураОпций);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||||
|
|
||||||
|
Заголовки = Новый Соответствие;
|
||||||
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||||
|
|
||||||
|
Возврат Заголовки;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей)
|
||||||
|
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||||
|
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
||||||
|
|
||||||
|
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
||||||
|
|
||||||
|
Возврат ОписаниеТаблицы;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ОписаниеПримитовногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
||||||
|
|
||||||
|
СтруктураПоля = Новый Структура();
|
||||||
|
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
||||||
|
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
||||||
|
|
||||||
|
Возврат СтруктураПоля;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
#КонецОбласти
|
11
OPI/src/CommonModules/OPI_Airtable/OPI_Airtable.mdo
Normal file
11
OPI/src/CommonModules/OPI_Airtable/OPI_Airtable.mdo
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="457991ad-c2ad-49b8-a26a-9fc83c8a7d11">
|
||||||
|
<name>OPI_Airtable</name>
|
||||||
|
<synonym>
|
||||||
|
<key></key>
|
||||||
|
<value>OPI airtable</value>
|
||||||
|
</synonym>
|
||||||
|
<server>true</server>
|
||||||
|
<externalConnection>true</externalConnection>
|
||||||
|
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||||
|
</mdclass:CommonModule>
|
@ -52,9 +52,10 @@
|
|||||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
||||||
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
||||||
Разделы.Вставить("Slack" , СтандартныеЗависимости);
|
Разделы.Вставить("Slack" , СтандартныеЗависимости);
|
||||||
|
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
||||||
|
|
||||||
Возврат Разделы;
|
Возврат Разделы;
|
||||||
|
|
||||||
@ -73,6 +74,7 @@
|
|||||||
Ноушн = "Notion";
|
Ноушн = "Notion";
|
||||||
Слак = "Slack";
|
Слак = "Slack";
|
||||||
Таблицы = "GoogleSheets";
|
Таблицы = "GoogleSheets";
|
||||||
|
АирТ = "Airtable";
|
||||||
|
|
||||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||||
@ -193,6 +195,8 @@
|
|||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||||
|
|
||||||
|
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать базу" , АирТ);
|
||||||
|
|
||||||
Возврат ТаблицаТестов;
|
Возврат ТаблицаТестов;
|
||||||
|
|
||||||
|
@ -272,6 +272,13 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ПолучитьЧисло(Значение) Экспорт
|
||||||
|
|
||||||
|
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
||||||
|
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
@ -3467,6 +3467,32 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
|
#Область Airtable
|
||||||
|
|
||||||
|
Процедура АТ_СоздатьБазу() Экспорт
|
||||||
|
|
||||||
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||||
|
Область = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Workspace");
|
||||||
|
Наименование = "Тестовая база";
|
||||||
|
|
||||||
|
МассивПолей = Новый Массив;
|
||||||
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Автономер"));
|
||||||
|
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
||||||
|
|
||||||
|
СоответствиеТаблиц = Новый Соответствие;
|
||||||
|
СоответствиеТаблиц.Вставить("Тестовая таблица", МассивПолей);
|
||||||
|
|
||||||
|
Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц);
|
||||||
|
|
||||||
|
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОБоте");
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Заполнено();
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(Наименование);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
<commonModules>CommonModule.OPI_GoogleDrive</commonModules>
|
<commonModules>CommonModule.OPI_GoogleDrive</commonModules>
|
||||||
<commonModules>CommonModule.OPI_GoogleSheets</commonModules>
|
<commonModules>CommonModule.OPI_GoogleSheets</commonModules>
|
||||||
<commonModules>CommonModule.OPI_Slack</commonModules>
|
<commonModules>CommonModule.OPI_Slack</commonModules>
|
||||||
|
<commonModules>CommonModule.OPI_Airtable</commonModules>
|
||||||
<commonModules>CommonModule.OPI_Тесты</commonModules>
|
<commonModules>CommonModule.OPI_Тесты</commonModules>
|
||||||
<commonModules>CommonModule.OPI_ПолучениеДанныхТестов</commonModules>
|
<commonModules>CommonModule.OPI_ПолучениеДанныхТестов</commonModules>
|
||||||
</mdclass:Configuration>
|
</mdclass:Configuration>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user