diff --git a/OInt/core/Modules/OPI_Airtable.os b/OInt/core/Modules/OPI_Airtable.os index c464e2a2cd..0e638b65dc 100644 --- a/OInt/core/Modules/OPI_Airtable.os +++ b/OInt/core/Modules/OPI_Airtable.os @@ -414,6 +414,130 @@ #КонецОбласти +#Область РаботаСКомментариями + +// Получить комментарии +// Получает список комментариев к записи в таблице +// +// Параметры: +// Токен - Строка - Токен - token +// База - Строка - Идентификатор базы данных - base +// Таблица - Строка - Идентификатор таблицы - table +// Запись - Строка - Идентификатор записи в таблице - record +// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable +Функция ПолучитьКомментарии(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Отступ = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись); + + URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments"; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура(); + OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры); + + Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Создать комментарий +// Создает комментарий к записи в таблице +// +// Параметры: +// Токен - Строка - Токен - token +// База - Строка - Идентификатор базы данных - base +// Таблица - Строка - Идентификатор таблицы - table +// Запись - Строка - Идентификатор записи в таблице - record +// Текст - Строка - Текст комментария - text +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable +Функция СоздатьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Текст) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись); + + URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments"; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура(); + OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры); + + Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Изменить комментарий +// Изменяет текст существующего комментария +// +// Параметры: +// Токен - Строка - Токен - token +// База - Строка - Идентификатор базы данных - base +// Таблица - Строка - Идентификатор таблицы - table +// Запись - Строка - Идентификатор записи в таблице - record +// Комментарий - Строка - Идентификатор комментария - comment +// Текст - Строка - Новый текст комментария - text +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable +Функция ИзменитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий, Знач Текст) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий); + + URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура(); + OPI_Инструменты.ДобавитьПоле("text", Текст, "Строка", Параметры); + + Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить комментарий +// Удаляет комментарий к записи таблицы +// +// Параметры: +// Токен - Строка - Токен - token +// База - Строка - Идентификатор базы данных - base +// Таблица - Строка - Идентификатор таблицы - table +// Запись - Строка - Идентификатор записи в таблице - record +// Комментарий - Строка - Идентификатор комментария - comment +// +// Возвращаемое значение: +// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable +Функция УдалитьКомментарий(Знач Токен, Знач База, Знач Таблица, Знач Запись, Знач Комментарий) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(База); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись); + OPI_ПреобразованиеТипов.ПолучитьСтроку(Комментарий); + + URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись + "/comments/" + Комментарий; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Ответ = OPI_Инструменты.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + +#КонецОбласти + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git a/OInt/tests/Modules/internal/OPI_Тесты.os b/OInt/tests/Modules/internal/OPI_Тесты.os index 17cfe0d606..64a10e2812 100644 --- a/OInt/tests/Modules/internal/OPI_Тесты.os +++ b/OInt/tests/Modules/internal/OPI_Тесты.os @@ -3617,27 +3617,55 @@ OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗапись"); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Равно(ОдиночнаяЗапись); + + Текст = "Тестовый комментарий"; + Результат = OPI_Airtable.СоздатьКомментарий(Токен, База, Таблица, ОдиночнаяЗапись, Текст); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["text"]).Равно(Текст); + + Коммент = Результат["id"]; + Текст = "Тестовый комментарий (изм.)"; + Результат = OPI_Airtable.ИзменитьКомментарий(Токен, База, Таблица, ОдиночнаяЗапись, Коммент, Текст); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьКомментарий"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["text"]).Равно(Текст); + + Результат = OPI_Airtable.ПолучитьКомментарии(Токен, База, Таблица, ОдиночнаяЗапись); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьКомментарии"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["comments"]).ИмеетТип("Массив"); + + Результат = OPI_Airtable.УдалитьКомментарий(Токен, База, Таблица, ОдиночнаяЗапись, Коммент); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["deleted"]).Равно(Истина); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Равно(Коммент); Результат = OPI_Airtable.ПолучитьСписокЗаписей(Токен, База, Таблица); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокЗаписей"); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(3); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).Заполнено(); Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи"); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(2); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).Заполнено(); Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, ОдиночнаяЗапись); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (одна)"); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив"); - OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(1); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).Заполнено(); КонецПроцедуры