Блог Горошко Андрея Bitrix24 REST API Битрикс24: Работа с задачами (tasks.task)

REST API Битрикс24: Работа с задачами (tasks.task)

REST API Битрикс24 предоставляет мощный инструмент для работы с задачами через HTTP-запросы. В этой статье мы разберем основные методы для получения и фильтрации задач, а также важные нюансы, которые помогут вам избежать ошибок.

Основные методы:

  • tasks.task.list: Получение списка задач с возможностью фильтрации и сортировки.
  • tasks.task.get: Получение одной задачи по ID.
  • tasks.task.getFields: Получение информации о полях задач (типы, названия, допустимые значения).

1. tasks.task.list: Получение списка задач

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

Формат запроса:

GET сайт/rest/xxx/xxx/tasks.task.list.json?{параметры}

Параметры запроса:

  • order: Массив для сортировки. Например, order[ID]=ASC для сортировки по ID по возрастанию, или order[CREATED_DATE]=DESC для сортировки по дате создания по убыванию. Доступные поля для сортировки можно получить через tasks.task.getFields.
  • filter: Массив для фильтрации. Здесь доступно множество вариантов:
    • По ID: filter[>ID]=100 (ID больше 100), filter[=ID]=50 (ID равно 50), filter[<ID]=200 (ID меньше 200), filter[>=ID]=150 (ID больше или равно 150), filter[<=ID]=250 (ID меньше или равно 250), filter[!ID]=300 (ID не равно 300).
    • По названию: filter[%TITLE]=тест (название содержит «тест»), filter[!%TITLE]=отчет (название не содержит «отчет»).
    • По статусу: filter[STATUS]=2 (статус равен 2 — «В работе»). Список статусов можно получить через tasks.task.getFields. Используйте filter[REAL_STATUS], чтобы отфильтровать по реальному статусу задачи, исключая метастатусы (например, «Просрочена»).
    • По дате создания: filter[>=CREATED_DATE]=2023-11-01T00:00:00%2B03:00 (дата создания больше или равна 1 ноября 2023 года в часовом поясе +3). Важно: используйте формат ISO 8601 и указывайте часовой пояс.
    • По дате изменения: filter[<CHANGED_DATE]=2023-11-15T00:00:00%2B03:00 (дата изменения меньше 15 ноября 2023 года в часовом поясе +3).
    • По группе: filter[GROUP_ID]=5 (задачи из группы с ID 5).
    • По ответственному: filter[RESPONSIBLE_ID]=1 (задачи, где ответственный — пользователь с ID 1).
    • По участию: filter[MEMBER]=3 (задачи, где пользователь с ID 3 участвует в любом качестве). filter[DOER]=7 — задачи, где пользователь с ID 7 — ответственный или соисполнитель.
    • По тэгам: filter[TAG]=проект_альфа (задачи с тегом «проект_альфа»). Можно указывать несколько тегов через запятую.
    • ::SUBFILTER-PARAMS: Позволяет фильтровать по специальным параметрам. filter[::SUBFILTER-PARAMS][FAVORITE]=Y (задачи в избранном), filter[::SUBFILTER-PARAMS][VIEWED]=1 (просмотренные). Можно фильтровать задачи без дедлайна: filter[::SUBFILTER-PARAMS][DEADLINE]= (пустое значение означает «без дедлайна»).
  • select: Массив для выбора полей. Например, select[0]=ID и select[1]=TITLE вернут только ID и название задачи. select[0]=* вернет все поля. Важно: всегда указывайте select, даже если нужны все поля, так как список полей по умолчанию может меняться.
  • start: Сколько записей пропустить. Используется для пагинации. Значение должно быть кратно 50. start=-1 отключает подсчет общего количества задач, что полезно для больших списков.
  • limit: Максимальное количество записей в ответе. По умолчанию 50.

Пример запроса:

GET сайт/rest/xxx/xxx/tasks.task.list.json?filter[GROUP_ID]=1&filter[>STATUS]=1&order[ID]=DESC&select[0]=*&start=0

Этот запрос вернет первые 50 задач из группы с ID 1, у которых статус больше 1, отсортированные по ID по убыванию.

2. tasks.task.get: Получение одной задачи

Этот метод позволяет получить одну задачу по ее ID.

Формат запроса:

GET сайт/rest/xxx/xxx/tasks.task.get.json?taskId={ID задачи}&select[0]=*

Параметры запроса:

  • taskId: ID задачи.
  • select: Массив для выбора полей. select[0]=* вернет все поля.

Пример запроса:

сайт/rest/xxx/xxx/tasks.task.get.json?taskId=123&select[0]=*

3. tasks.task.getFields: Получение информации о полях

Этот метод возвращает информацию о доступных полях задач, их типах, названиях и допустимых значениях. Это очень полезно для построения фильтров и выбора полей в запросах.

Формат запроса:

GET сайт/rest/xxx/xxx/tasks.task.getFields.json

Работа с датами:

При фильтрации по датам используйте формат ISO 8601 (YYYY-MM-DDTHH:MM:SS±HH:MM) с обязательным указанием часового пояса. Например, 2023-11-20T10:00:00+03:00. Специальные символы в URL нужно экранировать. Например, + заменяется на %2B.

Работа с большими списками:

REST API Битрикс24 возвращает данные постранично. Для работы с большими списками используйте параметры start и limit. start=-1 отключает подсчет общего количества, что снижает нагрузку на сервер. Получайте данные порциями по 50 записей, увеличивая start с каждым запросом.

Обработка ошибок:

REST API Битрикс24 возвращает ответы в формате JSON. В случае ошибки, в ответе будет поле error с кодом и описанием ошибки. Всегда проверяйте наличие этого поля.

Дополнительные возможности:

  • Пользовательские поля: Можно фильтровать и выбирать пользовательские поля задач (UF_*).
  • Связанные сущности: Можно получать информацию о связанных сущностях (например, о создателе или ответственном) через select.

С помощью этих методов и рекомендаций вы сможете эффективно работать с задачами в Битрикс24 через REST API. Не забывайте изучать документацию для получения полной информации о возможностях API.

4. Работа с пользовательскими полями (UF_*)

Вы можете фильтровать и выбирать пользовательские поля задач (UF_*) в REST запросах. Для этого используйте имя пользовательского поля в параметрах filter и select.

Пример:

сайт/rest/xxx/xxx/tasks.task.list.json?filter[UF_CRM_TASK]=123&select[0]=*&select[1]=UF_CRM_TASK

Этот запрос вернет все задачи, у которых в пользовательском поле UF_CRM_TASK указано значение 123, и включит само поле UF_CRM_TASK в ответ.

Важно:

  • Тип данных пользовательского поля должен соответствовать типу значения в фильтре. Например, для числового поля используйте числовое значение в фильтре, для строкового — строковое.
  • Для получения списка пользовательских полей и их типов используйте метод tasks.task.getFields.

5. Дополнительные фильтры (::SUBFILTER-…)

Битрикс24 REST API предоставляет специальные фильтры, начинающиеся с ::SUBFILTER-. Мы уже рассмотрели ::SUBFILTER-PARAMS выше. Есть и другие:

  • ::SUBFILTER-ROLEID: Фильтрация по роли пользователя в задаче. Например, filter[::SUBFILTER-ROLEID][=CREATED_BY]=1 вернет задачи, созданные пользователем с ID 1. Другие роли: =RESPONSIBLE_ID (ответственный), =ACCOMPLICE (соисполнитель), =AUDITOR (наблюдатель).
  • ::SUBFILTER-PROBLEM: Фильтрация по «проблемам» с задачей. Например, filter[::SUBFILTER-PROBLEM][VIEWED]=0 вернет непросмотренные задачи. Другой пример: filter[::SUBFILTER-PROBLEM][STATUS]=-1 вернет просроченные задачи.
  • ::SUBFILTER-BINDINGS: Этот подфильтр используется для расширенного поиска задач. С помощью него можно отбирать задачи по привязкам к CRM, почте, календарю и другим сущностям.

6. Получение данных о связанных сущностях

Вы можете получать информацию о связанных с задачей сущностях (например, о создателе или ответственном) непосредственно в запросе tasks.task.list, не делая дополнительных запросов. Для этого используйте select с указанием полей связанной сущности.

Пример:

сайт/rest/xxx/xxx/tasks.task.list.json?select[0]=*&select[1]=CREATED_BY_USER.NAME&select[2]=RESPONSIBLE.WORK_POSITION

Этот запрос вернет все поля задачи, а также имя создателя (CREATED_BY_USER.NAME) и должность ответственного (RESPONSIBLE.WORK_POSITION). Для получения полного списка доступных полей связанных сущностей, снова используйте tasks.task.getFields.

7. Формат ответа

Ответ tasks.task.list содержит следующие поля:

  • result: Массив с результатами.
    • tasks: Массив задач. Каждая задача — ассоциативный массив с выбранными полями.
  • total: Общее количество задач, удовлетворяющих фильтру (если start не равен -1). Обратите внимание: total может отсутствовать в ответе при использовании постраничной навигации со start=-1. В таком случае для получения общего количества задач необходимо выполнить отдельный запрос.
  • next: Значение start для следующей страницы результатов (если есть еще задачи). Как и total, next может отсутствовать при использовании start=-1. Для корректной пагинации в таком случае используйте свой счетчик start на клиенте и увеличивайте его на limit с каждым запросом, пока не перестанете получать данные.

8. Пример комплексного запроса

сайт/rest/xxx/xxx/tasks.task.list?filter[GROUP_ID]=10&filter[::SUBFILTER-ROLEID][=RESPONSIBLE_ID]=5&filter[>CREATED_DATE]=2023-10-01T00:00:00%2B03:00&select[0]=*&select[1]=CREATED_BY_USER.NAME&order[DEADLINE]=ASC&start=0

Этот запрос вернет первые 50 задач из группы 10, где ответственный — пользователь 5, созданные после 1 октября 2023 года (в часовом поясе +3), отсортированные по дедлайну по возрастанию. В ответе будут все поля задачи, а также имя создателя.

Заключение

Мы рассмотрели основные методы и параметры REST API Битрикс24 для работы с задачами. Используя эти знания, вы сможете создавать гибкие запросы для получения и фильтрации задач, интегрировать Битрикс24 с другими системами и автоматизировать свою работу. Не забывайте про документацию API и возможности тестирования запросов в интерфейсе Битрикс24.

Средний рейтинг
Еще нет оценок

Добавить комментарий

Related Post

Работа с задачами в Битрикс24 : Подробное руководство для разработчиковРабота с задачами в Битрикс24 : Подробное руководство для разработчиков

Введение: Битрикс24 – мощная платформа для управления бизнесом, и модуль «Задачи» является одним из ключевых элементов для организации работы. В «коробочной» версии Битрикс24 разработчики получают прямой доступ к API, что

API Bitrix24 обновления и получения пользовательских полейAPI Bitrix24 обновления и получения пользовательских полей

Bitrix24 предоставляет мощный API, который позволяет разработчикам взаимодействовать с системой на более глубоком уровне. В этой статье мы рассмотрим, как использовать API Bitrix24 для обновления и получения пользовательских полей. Что