1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-13 20:05:19 +02:00

B24: Добавление и удаление комментариев задачи

This commit is contained in:
Anton
2024-07-03 18:50:01 +03:00
parent 94cb0ea1d7
commit 9d946a3f34
8 changed files with 4388 additions and 3994 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -364,24 +364,6 @@
#Область РаботаСЗадачами
// Получить структуру задачи
// Получает структуру с описанем полей для создания задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСтруктуруЗадачи(Знач URL, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.getFields");
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить задачу
// Получает задачу по ID
//
@@ -426,9 +408,9 @@
// Создает новую задачу по структуре полей (см. ПолучитьСтруктуруЗадачи)
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// СтруктураПолей - Структура Из КлючИЗначение - Структура полей задачи - fields
// Токен - Строка - Токен авторизации, если используется не вебхук - token
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// СтруктураПолей - Структура Из КлючИЗначение - Структура полей задачи (см. ПолучитьСтруктуруЗадачи) - fields
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
@@ -734,29 +716,6 @@
КонецФункции
// Получить список комментариев задачи
// Полчает список комментариев пользователей к задаче по ID
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число,Строка - ID задачи - task
// Фильтр - Структура из КлючИЗначение - Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев) - filter
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСписокКомментариевЗадачи(Знач URL, Знач IDЗадачи, Знач Фильтр = "", Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.delegate");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FILTER", Фильтр , "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Проверить доступ к задаче
// Проверяет доступность задачи для пользователей
//
@@ -814,6 +773,24 @@
КонецФункции
// Получить структуру задачи
// Получает структуру с описанем полей для создания задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСтруктуруЗадачи(Знач URL, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.getFields");
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить структуру фильтра задач
// Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач
//
@@ -869,6 +846,117 @@
КонецФункции
#КонецОбласти
#Область РаботаСКомментариямиИРезультатамиЗадач
// Получить список комментариев задачи
// Полчает список комментариев пользователей к задаче по ID
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число,Строка - ID задачи - task
// Фильтр - Структура из КлючИЗначение - Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев) - filter
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСписокКомментариевЗадачи(Знач URL, Знач IDЗадачи, Знач Фильтр = "", Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.getlist");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FILTER", Фильтр , "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Создать комментарий
// Создает комментарий к задаче
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число, Строка - ID задачи - task
// Текст - Строка - Текст комментария - text
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция СоздатьКомментарий(Знач URL, Знач IDЗадачи, Знач Текст, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.add");
Комментарий = Новый Структура;
OPI_Инструменты.ДобавитьПоле("POST_MESSAGE", Текст, "Строка", Комментарий);
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FIELDS", Комментарий, "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Удалить комментарий
// Удаляет существующий комментарий задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число, Строка - ID задачи - task
// IDКомментария - Число, Строка - ID удаляемого комментария - comment
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция УдалитьКомментарий(Знач URL, Знач IDЗадачи, Знач IDКомментария, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.delete");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("ITEMID", IDКомментария, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить структуру комментария
// Получает структуру полей комментария
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруКомментария(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/add.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("AUTHOR_ID" , "<идентификатор автора комментария>");
СтруктураПолей.Вставить("AUTHOR_NAME" , "<Имя пользователя (опционально)>");
СтруктураПолей.Вставить("AUTHOR_EMAIL" , "<E-mail пользователя (опционально)>");
СтруктураПолей.Вставить("USE_SMILES" , "<(Y|N) - парсить или нет комментарии на наличие смайлов>");
СтруктураПолей.Вставить("POST_MESSAGE" , "<Текст сообщения>");
СтруктураПолей.Вставить("UF_FORUM_MESSAGE_DOC" , "<Массив файлов с диска для прикрепления>");
Если Пустая Тогда
Для Каждого Поле Из СтруктураПолей Цикл
Поле.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураПолей;
КонецФункции
// Получить структуру фильтра комментариев
// Возвращает структуру полей для фильтрации комментариев в методе ПолучитьСписокКомментариевЗадачи
//
@@ -879,25 +967,25 @@
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруФильтраКомментариев(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/getlist.php
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/getlist.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор комментария>");
СтруктураФильтра.Вставить("AUTHOR_ID " , "<идентификатор автора комментария>");
СтруктураФильтра.Вставить("AUTHOR_NAME ", "<имя автора>");
СтруктураФильтра.Вставить("POST_DATE " , "<дата публикации комментария>");
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор комментария>");
СтруктураФильтра.Вставить("AUTHOR_ID " , "<идентификатор автора комментария>");
СтруктураФильтра.Вставить("AUTHOR_NAME ", "<имя автора>");
СтруктураФильтра.Вставить("POST_DATE " , "<дата публикации комментария>");
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураФильтра;
Возврат СтруктураФильтра;
КонецФункции

View File

@@ -1,21 +1,21 @@
<package-def>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Airtable" file="core/Modules/OPI_Airtable.os"/>
<module name="OPI_Bitrix24" file="core/Modules/OPI_Bitrix24.os"/>
<module name="OPI_Dropbox" file="core/Modules/OPI_Dropbox.os"/>
<module name="OPI_GoogleCalendar" file="core/Modules/OPI_GoogleCalendar.os"/>
<module name="OPI_GoogleDrive" file="core/Modules/OPI_GoogleDrive.os"/>
<module name="OPI_GoogleSheets" file="core/Modules/OPI_GoogleSheets.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Notion" file="core/Modules/OPI_Notion.os"/>
<module name="OPI_Slack" file="core/Modules/OPI_Slack.os"/>
<module name="OPI_Telegram" file="core/Modules/OPI_Telegram.os"/>
<module name="OPI_Twitter" file="core/Modules/OPI_Twitter.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Viber" file="core/Modules/OPI_Viber.os"/>
<module name="OPI_VK" file="core/Modules/OPI_VK.os"/>
<module name="OPI_YandexDisk" file="core/Modules/OPI_YandexDisk.os"/>
<module name="OPI_YandexID" file="core/Modules/OPI_YandexID.os"/>
<module name="OPI_GoogleWorkspace" file="core/Modules/OPI_GoogleWorkspace.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Криптография" file="tools/Modules/internal/Modules/OPI_Криптография.os"/>
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
</package-def>

View File

@@ -2972,6 +2972,40 @@
КонецПроцедуры
Процедура Б24_РаботаСКомментариями() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста);
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
Час = 3600;
Сутки = 24;
Исполнитель = 1;
СтруктураЗадачи = Новый Структура;
СтруктураЗадачи.Вставить("TITLE" , "Новая задача");
СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи");
СтруктураЗадачи.Вставить("PRIORITY" , "2");
СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки);
СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель);
URL = ПараметрыТеста["Bitrix24_URL"];
Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи);
IDЗадачи = Результат["result"]["task"]["id"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи);
ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи);
Bitrix24_СоздатьКомментарий(ПараметрыТеста);
Bitrix24_УдалитьКомментарий(ПараметрыТеста);
OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -7607,6 +7641,68 @@
КонецПроцедуры
Процедура Bitrix24_СоздатьКомментарий(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"];
Текст = "Задача невыполнима, расходимся";
Результат = OPI_Bitrix24.СоздатьКомментарий(URL, IDЗадачи, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий (хук)", "Bitrix24");
Проверка_БитриксЧисло(Результат); // SKIP
IDКомментария = Результат["result"]; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCommentID", IDКомментария); // SKIP
ПараметрыФункции.Вставить("Bitrix24_HookCommentID", IDКомментария); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
Текст = "Задача выполнима, не расходимся";
Результат = OPI_Bitrix24.СоздатьКомментарий(URL, IDЗадачи, Текст, Токен);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий", "Bitrix24");
Проверка_БитриксЧисло(Результат);
IDКомментария = Результат["result"]; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentID", IDКомментария); // SKIP
ПараметрыФункции.Вставить("Bitrix24_CommentID", IDКомментария); // SKIP
КонецПроцедуры
Процедура Bitrix24_УдалитьКомментарий(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"];
IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"];
Результат = OPI_Bitrix24.УдалитьКомментарий(URL, IDЗадачи, IDКомментария);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий (хук)", "Bitrix24");
Проверка_БитриксИстина(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
IDКомментария = ПараметрыФункции["Bitrix24_CommentID"];
Результат = OPI_Bitrix24.УдалитьКомментарий(URL, IDЗадачи, IDКомментария, Токен);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий", "Bitrix24");
Проверка_БитриксИстина(Результат);
КонецПроцедуры
#КонецОбласти
#Область YandexDisk

View File

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

View File

@@ -364,24 +364,6 @@
#Область РаботаСЗадачами
// Получить структуру задачи
// Получает структуру с описанем полей для создания задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСтруктуруЗадачи(Знач URL, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.getFields");
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить задачу
// Получает задачу по ID
//
@@ -426,9 +408,9 @@
// Создает новую задачу по структуре полей (см. ПолучитьСтруктуруЗадачи)
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// СтруктураПолей - Структура Из КлючИЗначение - Структура полей задачи - fields
// Токен - Строка - Токен авторизации, если используется не вебхук - token
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// СтруктураПолей - Структура Из КлючИЗначение - Структура полей задачи (см. ПолучитьСтруктуруЗадачи) - fields
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
@@ -734,29 +716,6 @@
КонецФункции
// Получить список комментариев задачи
// Полчает список комментариев пользователей к задаче по ID
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число,Строка - ID задачи - task
// Фильтр - Структура из КлючИЗначение - Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев) - filter
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСписокКомментариевЗадачи(Знач URL, Знач IDЗадачи, Знач Фильтр = "", Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.delegate");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FILTER", Фильтр , "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Проверить доступ к задаче
// Проверяет доступность задачи для пользователей
//
@@ -814,6 +773,24 @@
КонецФункции
// Получить структуру задачи
// Получает структуру с описанем полей для создания задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСтруктуруЗадачи(Знач URL, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "tasks.task.getFields");
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить структуру фильтра задач
// Возвращает структуру полей для фильтрации задач в методе ПолучитьСписокЗадач
//
@@ -869,6 +846,117 @@
КонецФункции
#КонецОбласти
#Область РаботаСКомментариямиИРезультатамиЗадач
// Получить список комментариев задачи
// Полчает список комментариев пользователей к задаче по ID
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число,Строка - ID задачи - task
// Фильтр - Структура из КлючИЗначение - Структура отбора (см. ПолучитьСтруктуруФильтраКомментариев) - filter
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция ПолучитьСписокКомментариевЗадачи(Знач URL, Знач IDЗадачи, Знач Фильтр = "", Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.getlist");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FILTER", Фильтр , "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Создать комментарий
// Создает комментарий к задаче
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число, Строка - ID задачи - task
// Текст - Строка - Текст комментария - text
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция СоздатьКомментарий(Знач URL, Знач IDЗадачи, Знач Текст, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.add");
Комментарий = Новый Структура;
OPI_Инструменты.ДобавитьПоле("POST_MESSAGE", Текст, "Строка", Комментарий);
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("FIELDS", Комментарий, "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Удалить комментарий
// Удаляет существующий комментарий задачи
//
// Параметры:
// URL - Строка - URL внешнего вебхука или адрес Bitrix24 при использовании токена - url
// IDЗадачи - Число, Строка - ID задачи - task
// IDКомментария - Число, Строка - ID удаляемого комментария - comment
// Токен - Строка - Токен авторизации, если используется не вебхук - token
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Bitrxi24
Функция УдалитьКомментарий(Знач URL, Знач IDЗадачи, Знач IDКомментария, Знач Токен = "") Экспорт
Параметры = НормализоватьАвторизацию(URL, Токен, "task.commentitem.delete");
OPI_Инструменты.ДобавитьПоле("TASKID", IDЗадачи , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("ITEMID", IDКомментария, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить структуру комментария
// Получает структуру полей комментария
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруКомментария(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/add.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("AUTHOR_ID" , "<идентификатор автора комментария>");
СтруктураПолей.Вставить("AUTHOR_NAME" , "<Имя пользователя (опционально)>");
СтруктураПолей.Вставить("AUTHOR_EMAIL" , "<E-mail пользователя (опционально)>");
СтруктураПолей.Вставить("USE_SMILES" , "<(Y|N) - парсить или нет комментарии на наличие смайлов>");
СтруктураПолей.Вставить("POST_MESSAGE" , "<Текст сообщения>");
СтруктураПолей.Вставить("UF_FORUM_MESSAGE_DOC" , "<Массив файлов с диска для прикрепления>");
Если Пустая Тогда
Для Каждого Поле Из СтруктураПолей Цикл
Поле.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураПолей;
КонецФункции
// Получить структуру фильтра комментариев
// Возвращает структуру полей для фильтрации комментариев в методе ПолучитьСписокКомментариевЗадачи
//
@@ -879,25 +967,25 @@
// Структура Из КлючИЗначение - Структура полей
Функция ПолучитьСтруктуруФильтраКомментариев(Знач Пустая = Ложь) Экспорт
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/getlist.php
// Подробнее
// https://dev.1c-bitrix.ru/rest_help/tasks/task/commentitem/getlist.php
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор комментария>");
СтруктураФильтра.Вставить("AUTHOR_ID " , "<идентификатор автора комментария>");
СтруктураФильтра.Вставить("AUTHOR_NAME ", "<имя автора>");
СтруктураФильтра.Вставить("POST_DATE " , "<дата публикации комментария>");
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("ID" , "<идентификатор комментария>");
СтруктураФильтра.Вставить("AUTHOR_ID " , "<идентификатор автора комментария>");
СтруктураФильтра.Вставить("AUTHOR_NAME ", "<имя автора>");
СтруктураФильтра.Вставить("POST_DATE " , "<дата публикации комментария>");
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
Если Пустая Тогда
Для Каждого Фильтр Из СтруктураФильтра Цикл
Фильтр.Значение = "";
КонецЦикла;
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураФильтра;
Возврат СтруктураФильтра;
КонецФункции

View File

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

View File

@@ -2972,6 +2972,40 @@
КонецПроцедуры
Процедура Б24_РаботаСКомментариями() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_URL" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Domain", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Bitrix24_Token" , ПараметрыТеста);
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
Час = 3600;
Сутки = 24;
Исполнитель = 1;
СтруктураЗадачи = Новый Структура;
СтруктураЗадачи.Вставить("TITLE" , "Новая задача");
СтруктураЗадачи.Вставить("DESCRIPTION" , "Новое описание задачи");
СтруктураЗадачи.Вставить("PRIORITY" , "2");
СтруктураЗадачи.Вставить("DEADLINE" , ТекущаяДата + Час * Сутки);
СтруктураЗадачи.Вставить("RESPONSIBLE_ID", Исполнитель);
URL = ПараметрыТеста["Bitrix24_URL"];
Результат = OPI_Bitrix24.СоздатьЗадачу(URL, СтруктураЗадачи);
IDЗадачи = Результат["result"]["task"]["id"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentsTaskID", IDЗадачи);
ПараметрыТеста.Вставить("Bitrix24_CommentsTaskID", IDЗадачи);
Bitrix24_СоздатьКомментарий(ПараметрыТеста);
Bitrix24_УдалитьКомментарий(ПараметрыТеста);
OPI_Bitrix24.УдалитьЗадачу(URL, IDЗадачи);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -7607,6 +7641,68 @@
КонецПроцедуры
Процедура Bitrix24_СоздатьКомментарий(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"];
Текст = "Задача невыполнима, расходимся";
Результат = OPI_Bitrix24.СоздатьКомментарий(URL, IDЗадачи, Текст);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий (хук)", "Bitrix24");
Проверка_БитриксЧисло(Результат); // SKIP
IDКомментария = Результат["result"]; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_HookCommentID", IDКомментария); // SKIP
ПараметрыФункции.Вставить("Bitrix24_HookCommentID", IDКомментария); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
Текст = "Задача выполнима, не расходимся";
Результат = OPI_Bitrix24.СоздатьКомментарий(URL, IDЗадачи, Текст, Токен);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий", "Bitrix24");
Проверка_БитриксЧисло(Результат);
IDКомментария = Результат["result"]; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Bitrix24_CommentID", IDКомментария); // SKIP
ПараметрыФункции.Вставить("Bitrix24_CommentID", IDКомментария); // SKIP
КонецПроцедуры
Процедура Bitrix24_УдалитьКомментарий(ПараметрыФункции)
URL = ПараметрыФункции["Bitrix24_URL"];
IDЗадачи = ПараметрыФункции["Bitrix24_CommentsTaskID"];
IDКомментария = ПараметрыФункции["Bitrix24_HookCommentID"];
Результат = OPI_Bitrix24.УдалитьКомментарий(URL, IDЗадачи, IDКомментария);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий (хук)", "Bitrix24");
Проверка_БитриксИстина(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
IDКомментария = ПараметрыФункции["Bitrix24_CommentID"];
Результат = OPI_Bitrix24.УдалитьКомментарий(URL, IDЗадачи, IDКомментария, Токен);
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий", "Bitrix24");
Проверка_БитриксИстина(Результат);
КонецПроцедуры
#КонецОбласти
#Область YandexDisk