Получение задач из Битрикс24 в 1С через вебхуки и REST APi



Обработка-пример для загрузки задач за период из Битрикса24. Задачи вытягиваются в таблицу значений и отображаются на форме.

Встала как-то задача по формированию отчета по задачам из Битрикса. Штатными средствами Битрикса быстро уперлись в кривизну доступов (специфическая органиграмма компании требовала, чтобы отчет по задачам директору предоставляло лицо без прав администратора, и находящееся невысоко в самой организационной структуре компании).

Решено было попробовать, на что способен Rest API. Использовать будем вебхуки. 

Также оговорюсь, у нас коробочная версия битрикса, хотя на результат это вроде как не влияет.

 

Настройка Битрикс

Итак, первым делом сделаем вебхук в битриксе. Для этого переходим в Приложения -> Вебхуки -> Добавить вебхук -> Входящий вебхук. 

Доступ оставляем только на задачи, название и описание произвольное. В результате битрикс сгенерирует нам ссылку вида: https://YOURBITRIXDOMAIN/rest/****/******/profile 

Для данной обработки адрес это YOURBITRIXDOMAIN, а вебхук — rest/****/*****/ без profile в конце.

На этом работа на самом битриксе завершена.

 

Обработка

Для подключения к битриксу используются стандартные механизмы платформы:

HTTPСоединение, HTTPЗапрос, ЧтениеJSON

 

Подключение к Битрикс:

Соединение = Новый HTTPСоединение(АдресПортала,,ЛогинПортала, ПарольПортала, ,5, Новый ЗащищенноеСоединениеOpenSSL);

Отправка запроса: 

Метод = "tasks.task.list";

Запрос = Новый HTTPЗапрос(Вебхук + Метод + "?" + Параметры); 

Где метод tasks.task.list- это метод API битрикса, который возвращает массив задач, каждая из которых содержит массив полей.

Ограничение в 50 задач:

По умолчанию API выдает только 50 элементов, поэтому сначала мы узнаем общее количество элементов в массиве, затем в цикле собираем их все с помощью ключа &start=, который указывает с какой позиции начинать загрузку.

 

Функция-запрос в битрикс:

Функция ОтправитьЗапрос(Параметры)

ЛогинПортала = Объект.Логин;
ПарольПортала = Объект.Пароль;
АдресПортала = Объект.Адрес;
Вебхук = Объект.Вебхук;
Метод = "tasks.task.list";


Соединение = Новый HTTPСоединение(АдресПортала,,ЛогинПортала, ПарольПортала, ,5, Новый ЗащищенноеСоединениеOpenSSL);

Запрос = Новый HTTPЗапрос(Вебхук + Метод + "?" + Параметры);

Запрос.УстановитьТелоИзСтроки("");

Ответ = Соединение.Получить(Запрос);

Возврат Ответ.ПолучитьТелоКакСтроку();

КонецФункции

 

Результат вызова функции запихивается в ТЗ и выводится на форму.

Результаты выводятся как есть, без парсинга и прочего. Есть пример для парсинга дат в коде, закомментированный.

Если нужны еще какие-то поля или пояснения — прошу в комментарии.

Специально не сделано никаких привязок к существующим объектам ИБ, и никакого сохранения данных. Предполагалось, что это будет просто отчет по выводу задач за период для оценки KPI каждого сотрудника. 

Пример отчета также прилагается.

Тестировалась на платформе 8.3.14.1944, но должна работать на всех

4 Comments

  1. itriot11

    Наблюдателей, комментарии к задачам не пробовали выдернуть?

    Reply
  2. alexlx

    (1)

    Наблюдателей, комментарии к задачам не пробовали выдернуть?

    Пытался. Наблюдатели выдергиваются этой же обработкой. Поле auditors содержит массив ИД наблюдателей. Комментарии кажется отдельно методом task.commentitem.getlist, в который надо скормить ИД задачи

    Reply
  3. itriot11

    (2) думаю, было бы классно разработать подсистему, которая дергала всю связанную инфу с задачами Битрикса и формировала различные отчеты уже на стороне 1С. У самого, к сожалению, ручки пока так и не дошли до реализации.

    Reply
  4. alexlx

    (3) Я тоже думал об этом, но решил не засорять базу. Открыл-посмотрел-закрыл. На этом всё. Не так сильно люблю я битрикс 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *