Блог Горошко Андрея Bitrix24,PHP Получить историю задачи tasks.task.history.list

Получить историю задачи tasks.task.history.list

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить историю задачи tasks.task.history.list», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.

Получить историю задачи tasks.task.history.list

> Scope: task
>
> Кто может выполнять метод: любой пользователь с доступом к задаче на чтение

Метод tasks.task.history.list получает историю изменений задачи.

Параметры метода

Название
тип
Описание
taskId*
integer
Идентификатор задачи, для которой нужно получить историю.

Идентификатор задачи можно получить при создании новой задачи или методом получения списка задач

filter
object
Фильтр по типу события в формате {FIELD: 'EVENT'}. Список возможных значений для FIELD описан ниже
order
object
Объект для сортировки результата вида {"поле": "значение сортировки", ... }.

Направление сортировки может принимать значения:

— asc — по возрастанию
— desc — по убыванию

По умолчанию записи сортируются по убыванию по времени создания, то есть от новых к старым

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"taskId":8137,"filter":{"FIELD":"COMMENT"},"order":{"createdDate":"ASC"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/tasks.task.history.list
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"taskId":8137,"filter":{"FIELD":"COMMENT"},"order":{"createdDate":"ASC"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/tasks.task.history.list
  • JS
    // callListMethod: Получает все данные сразу.
    // Используйте только для небольших выборок (< 1000 элементов) из-за высокой
    // нагрузки на память.

    try {
    const response = await $b24.callListMethod(
        'tasks.task.history.list',
        {
            taskId: 8137,
            filter: { FIELD: 'COMMENT' },
            order: { createdDate: 'ASC' }
        },
        (progress) => { console.log('Progress:', progress) }
    );
    const items = response.getData() || [];
    for (const entity of items) { console.log('Entity:', entity) }
    } catch (error) {
    console.error('Request failed', error)
    }

    // fetchListMethod: Выбирает данные по частям с помощью итератора.
    // Используйте для больших объемов данных для эффективного потребления памяти.

    try {
    const generator = $b24.fetchListMethod('tasks.task.history.list', {
        taskId: 8137,
        filter: { FIELD: 'COMMENT' },
        order: { createdDate: 'ASC' }
    }, 'ID');
    for await (const page of generator) {
        for (const entity of page) { console.log('Entity:', entity) }
    }
    } catch (error) {
    console.error('Request failed', error)
    }

    // callMethod: Ручное управление постраничной навигацией через параметр start.
    // Используйте для точного контроля над пакетами запросов.
    // Для больших данных менее эффективен, чем fetchListMethod.

    try {
    const response = await $b24.callMethod('tasks.task.history.list', {
        taskId: 8137,
        filter: { FIELD: 'COMMENT' },
        order: { createdDate: 'ASC' }
    }, 0);
    const result = response.getData().result || [];
    for (const entity of result) { console.log('Entity:', entity) }
    } catch (error) {
    console.error('Request failed', error)
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'tasks.task.history.list',
                [
                    'taskId' => 8137,
                    'filter' => ['FIELD' => 'COMMENT'],
                    'order' => ['createdDate' => 'ASC']
                ]
            );

        $result = $response
            ->getResponseData()
            ->getResult();

        echo 'Success: ' . print_r($result, true);
        processData($result);

    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error fetching task history: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'tasks.task.history.list',
        {
            taskId: 8137,
            filter: { FIELD: 'COMMENT' },
            order: {createdDate: 'ASC'},
        },
        function(result){
            console.info(result.data());
            console.log(result);
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'tasks.task.history.list',
        [
            'taskId' => 8137,
            'filter' => ['FIELD' => 'COMMENT'],
            'order' => ['createdDate' => 'ASC']
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "list": [
            {
                "id": 16359,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "NEW",
                "value": {
                    "from": null,
                    "to": null
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16361,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "COMMENT",
                "value": {
                    "from": null,
                    "to": "3409"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16363,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "CHECKLIST_ITEM_CREATE",
                "value": {
                    "from": "",
                    "to": "Что сделать"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16365,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "CHECKLIST_ITEM_CREATE",
                "value": {
                    "from": "",
                    "to": "Связаться с клиентом"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16367,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "CHECKLIST_ITEM_CREATE",
                "value": {
                    "from": "",
                    "to": "Подготовить договор"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16369,
                "createdDate": "2025-09-25T14:09:45+03:00",
                "field": "CHECKLIST_ITEM_CREATE",
                "value": {
                    "from": "",
                    "to": "Подписать договор"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16371,
                "createdDate": "2025-09-25T14:09:57+03:00",
                "field": "AUDITORS",
                "value": {
                    "from": "",
                    "to": "547"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16375,
                "createdDate": "2025-09-25T14:09:57+03:00",
                "field": "COMMENT",
                "value": {
                    "from": null,
                    "to": "3411"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            },
            {
                "id": 16373,
                "createdDate": "2025-09-25T14:09:58+03:00",
                "field": "COMMENT",
                "value": {
                    "from": null,
                    "to": "3413"
                },
                "user": {
                    "id": 503,
                    "name": "Мария",
                    "lastName": "Иванова",
                    "secondName": "",
                    "login": "maria@mysite.ru"
                }
            }
        ],
    },
    "time": {
        "start": 1758798620,
        "finish": 1758798620.969019,
        "duration": 0.9690189361572266,
        "processing": 0,
        "date_start": "2025-09-25T14:10:20+03:00",
        "date_finish": "2025-09-25T14:10:20+03:00",
        "operating_reset_at": 1758799220,
        "operating": 0
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа. Содержит массив list, который содержит объекты с описанием событий в задаче.

Возвращает пустой массив "list":[], если задача не существует

time
time
Информация о времени выполнения запроса

Объекты lists {#lists}

Название
тип
Описание
id
integer
Идентификатор события истории
createdDate
string
Дата и время создания события в формате ISO 8601
field
string
Тип события истории. Возможные значения field:

— TITLE — изменение названия задачи
— DESCRIPTION — изменение описания задачи
— REAL_STATUS — изменение фактического статуса
— STATUS — изменение статуса задачи
— PRIORITY — изменение приоритета
— MARK — изменение оценки задачи
— COMMENT — добавление комментария
— DELETE — удаление задачи
— NEW — создание новой задачи
— RENEW — восстановление задачи
— MOVE_TO_BACKLOG — перемещение задачи в бэклог
— MOVE_TO_SPRINT — перемещение задачи в спринт
— PARENT_ID — изменение родительской задачи
— GROUP_ID — изменение рабочей группы/проекта
— STAGE_ID — изменение стадии
— CREATED_BY — изменение автора задачи
— RESPONSIBLE_ID — изменение исполнителя
— ACCOMPLICES — изменение соисполнителей
— AUDITORS — изменение наблюдателей
— DEADLINE — изменение крайнего срока
— START_DATE_PLAN — изменение плановой даты начала
— END_DATE_PLAN — изменение плановой даты окончания
— DURATION_PLAN — изменение плановой длительности
— DURATION_PLAN_SECONDS — изменение плановой длительности в секундах
— DURATION_FACT — изменение фактической длительности
— TIME_ESTIMATE — изменение оценки времени
— TIME_SPENT_IN_LOGS — изменение фактически затраченного времени по логу
— TAGS — изменение тегов задачи
— DEPENDS_ON — изменение зависимостей задачи
— FILES — изменение списка файлов
— UF_TASK_WEBDAV_FILES — изменение пользовательского поля с файлами
— CHECKLIST_ITEM_CREATE — создание пункта чек-листа
— CHECKLIST_ITEM_RENAME — переименование пункта чек-листа
— CHECKLIST_ITEM_REMOVE — удаление пункта чек-листа
— CHECKLIST_ITEM_CHECK — отметка пункта чек-листа как выполненного
— CHECKLIST_ITEM_UNCHECK — снятие отметки выполнения пункта чек-листа
— ADD_IN_REPORT — изменение признака «добавлять в отчет»
— TASK_CONTROL — изменение контроля результата
— ALLOW_TIME_TRACKING — включение или выключение учета времени
— ALLOW_CHANGE_DEADLINE — разрешение или запрет изменения дедлайна
— FLOW_ID — изменение потока

value
object
Объект описывает, какое изменение произошло:
— from — значение до изменения
— to — значение после изменения

Тип значения зависит от события: для нового комментария — ID комментария, для изменения пункта чек-листа — текст пункта, для добавления наблюдателя — идентификатор пользователя, и так далее

user
object
Объект с описанием пользователя, который выполнил действие

Объект user {#user}

Название
тип
Описание
id
integer
Идентификатор пользователя
name
string
Имя
lastName
string
Фамилия
secondName
string
Отчество
login
string
Логин

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

HTTP-статус: 400

{
    "error": "0",
    "error_description": "Access denied. (internal error)"
}

Возможные коды ошибок

КодОписаниеЗначение
100CTaskItem All parameters in the constructor must have real class type (internal error)Не указан обязательный параметр taskId
0wrong task id (internal error)В параметре taskId указано значение неверного типа
0Access denied. (internal error)У пользователя нет доступа к задаче
  • [](./tasks-task-get)
  • [](./tasks-task-list)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Получить историю задачи tasks.task.history.list» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Проголосовать в прикрепленном голосовании vote.AttachedVote.vote (vote.attach…Проголосовать в прикрепленном голосовании vote.AttachedVote.vote (vote.attach…

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Проголосовать в прикрепленном голосовании vote.AttachedVote.vote (vote.attach…». Мы подготовили подробный разбор принципов работы и развернутые примеры

Получить направление сделок crm.dealcategory.getПолучить направление сделок crm.dealcategory.get

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить направление сделок crm.dealcategory.get». Вы узнаете экспертные методики работы с crm.dealcategory.get и научитесь

Изменить роль пользователя в группе sonet_group.user.updateИзменить роль пользователя в группе sonet_group.user.update

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Изменить роль пользователя в группе sonet_group.user.update». Мы подготовили подробный разбор принципов работы и развернутые примеры