Примеры обмена между системой ClickUp и 1С.
Мне необходимо было загружать из системы ClickUp заявки на закупку в 1С, также их статусы, комментарии. Также нужен был и обратный обмен из 1С в ClickUp. Написать комментарий или поменять статус могли как в 1С, так и в ClickUp.
ClickUp - один из многих таск-менеджеров, имеющий собственное API, позволяющий для задач создавать дополнительные пользовательские поля. Здесь приведу некоторые примеры двухстороннего обмена с пояснениями.
Токен для API получается в ЛК ClickUp. ВАЖНО! Получить токен пользователя с полными правами в ClickUp.
Для начала получение списка задач, которые были изменены за последние сутки
Соединение = Новый HTTPСоединение("api.clickup.com",,"","",,,Новый ЗащищенноеСоединениеOpenSSL()
);
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/list/"+ИдПроекта+"/task?date_updated_gt"+ЮниксДата(НачалоДня(ТекущаяДата() - 24*3600))+"");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", ""+Токен+"");
HTTPОтвет = Соединение.Получить(HTTPЗапрос);
СтрокаЗапроса = HTTPОтвет.ПолучитьТелоКакСтроку();
Где ИдПроекта - Это ид того проекта, из которого получаем таски, можно посмотреть в самом ClickUp
Далее после загрузки заявки на оплату, необходимо было записать номер заявки 1С в заявку ClickUp в дополнительное поле, созданное пользователем. Ниже пример записи дополнительного поля
СтруктураДанных = Новый Структура("value", ЗаявкаОбъект.Номер);
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
ДанныеJSON = ЗаписьJSON.Закрыть();
///api/v2/task/{task_id}/field/{field_id}
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/task/"+ClickUpId+"/field/f466c5e8-7710-403d-a001-516e8406b222");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", ""+Токен+"");
HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеJSON);
HTTPОтвет = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос);
Где ClickUpId - Id задачи ClickUp
f466c5e8-7710-403d-a001-516e8406b222 - Ид доп поля созданного пользователей, можно посмотреть в самом ClickUp, либо в запросе задач, в каждой задаче есть массив дополнительных полей, с их названиями, значениями и идами, см ниже
МассивДопПолей = ТС.Получить("custom_fields");
Для Каждого ДопПоле Из МассивДопПолей Цикл
Если ДопПоле.Получить("name") = "Purchase Order No." Тогда
field_id = ДопПоле.Получить("id");
ЗначениеДопПоля = ДопПоле.Получить("value");
КонецЕсли;
КонецЦикла;
где ТС - задачи из ClickUp, прочитанная в соответствие.
Запись стандартных полей к задаче, например, хотим поменять описание задачи из 1С
ДанныеПолей = Новый Структура;
ДанныеПолей.Вставить("description", ОписаниеЗаявки);
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, ДанныеПолей);
ДанныеJSON = ЗаписьJSON.Закрыть();
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/task/"+ClickUpId);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", ""+Токен+"");
HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеJSON);
HTTPОтвет = Соединение.ВызватьHTTPМетод("PUT",HTTPЗапрос);
Чтение комментариев к задаче
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/task/"+ClickUpId+"/comment");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", ""+Токен+"");
HTTPОтвет = Соединение.Получить(HTTPЗапрос);
СтрокаЗапроса = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаЗапроса);
МассивДат = Новый Массив;
МассивДат.Добавить("created");
МассивДат.Добавить("updated");
ОбъектJSON = ПрочитатьJSON(ЧтениеJSON,Истина, МассивДат);
МассивКомментов = ОбъектJSON["comments"];
И добавление собственного комментария
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/task/"+ClickUpId+"/comment");
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", ""+Токен+"");
СтруктураДанных = Новый Структура("comment_text", Комментарий);
СтруктураДанных.Вставить("assignee",44157433);
СтруктураДанных.Вставить("notify_all", Истина);
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, СтруктураДанных);
ДанныеJSON = ЗаписьJSON.Закрыть();
HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеJSON);
HTTPОтвет = Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос);
где в строке СтруктураДанных.Вставить("assignee",44157433) это Id автора комментария в ClickUp.