Блог Горошко Андрея Bitrix24,PHP Получить список записей о затраченном времени task.elapseditem.getlist

Получить список записей о затраченном времени task.elapseditem.getlist

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

Получить список записей о затраченном времени task.elapseditem.getlist

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

Метод возвращает список записей о затраченном времени по задаче.

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

Название
тип
Описание
TASKID
integer
Идентификатор задачи.

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

ORDER
object
Объект для сортировки результата (подробное описание приведено ниже)
FILTER
object
Объект для фильтрации результата (подробное описание приведено ниже)
SELECT
array
Массив полей записей, которые будут возвращены методом. Можно указать только те поля, которые необходимы. Если в массиве присутствует значение "*", то будут возвращены все доступные поля.

По умолчанию будут возвращены все поля основной таблицы запроса

PARAMS
object
Объект для опций вызова. Элементом является объект NAV_PARAMS вида {'опция вызова': 'значение' [, ...]} (подробное описание приведено ниже) в виде структуры

Предупреждение
Соблюдать указанный в таблице порядок следования параметров в запросе — обязательно. Иначе запрос выполнится с ошибками.

Информация
Особенности ручного добавления информации о времени работы, которая была фактически выполнена несколько дней назад. В этом случае меняется значение некоторых полей:

  • CREATED_DATE — дата начала
  • DATE_START — дата создания записи
  • DATE_STOP — дата окончания записи

Параметр ORDER

Название
тип
Описание
ID
string
Идентификатор записи о затраченном времени. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
USER_ID
string
Идентификатор пользователя, от имени которого была сделана запись о затраченном времени. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
MINUTES
string
Затраченное время, минуты. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
SECONDS
string
Затраченное время, секунды. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
CREATED_DATE
string
Дата создания записи. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
DATE_START
string
Дата начала. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию
DATE_STOP
string
Дата конца. Может принимать значения:
— asc — по возрастанию
— desc — по убыванию

Параметр FILTER

Название
тип
Описание
ID
integer
Идентификатор записи о затраченном времени
USER_ID
integer
Идентификатор пользователя, от имени которого была сделана запись о затраченном времени
CREATED_DATE
datetime
Дата создания записи

Информация
Перед названием фильтруемого поля можно указать тип фильтрации:

  • «!» — не равно
  • «<" — меньше
  • «<=" — меньше либо равно
  • «>» — больше
  • «>=» — больше либо равно

‘значения фильтра’ — одиночное значение или массив

Параметр NAV_PARAMS

Название
тип
Описание
nPageSize
integer
Количество элементов на странице. В целях ограничения нагрузки на постраничную навигацию наложено ограничение в 50 записей
iNumPage
integer
Номер страницы при постраничной навигации

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '[{"ID": "desc"},{">=CREATED_DATE": "2024-02-16"}]' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/task.elapseditem.getlist
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{[{"ID": "desc"},{">=CREATED_DATE": "2024-02-16"}],"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/task.elapseditem.getlist
  • JS
    // callListMethod рекомендуется использовать, когда необходимо получить весь набор списочных данных и объём записей относительно невелик (до примерно 1000 элементов). Метод загружает все данные сразу, что может привести к высокой нагрузке на память при работе с большими объемами.
    
    try {
      const response = await $b24.callListMethod(
        'task.elapseditem.getlist',
        [
          1, 
          {'ID': 'desc'},
          {'<ID': 50}
        ],
        (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('task.elapseditem.getlist', [{'ID': 'desc'}, {'>=CREATED_DATE': '2024-02-16'}, ['ID', 'TASK_ID'], {"NAV_PARAMS":{"nPageSize":2}}], '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('task.elapseditem.getlist', [{'ID': 'desc'}, {'>=CREATED_DATE': '2024-02-16'}, ['ID', 'TASK_ID'], {"NAV_PARAMS":{"nPageSize":2}}], 0)
      const result = response.getData().result || []
      for (const entity of result) { console.log('Entity:', entity) }
    } catch (error) {
      console.error('Request failed', error)
    }
  • PHP
    try {
        // Получить все записи о затраченном времени с сортировкой по ID в нисходящем порядке.
        // Будут отфильтрованы только те записи, ID которых имеет значение меньше 50.
        $response1 = $b24Service
            ->core
            ->call(
                'task.elapseditem.getlist',
                [
                    1,
                    ['ID' => 'desc'],
                    ['<ID' => 50],
                ]
            );
    
        $result1 = $response1
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result1, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error getting elapsed time records: ' . $e->getMessage();
    }
    
    try {
        // Получение выборки по затраченному времени на основании общих условий фильтрации. Например, выбрать данные о трудозатратах с указанной даты:
        $response2 = $b24Service
            ->core
            ->call(
                'task.elapseditem.getlist',
                [
                    ['ID' => 'desc'],
                    ['>=CREATED_DATE' => '2024-02-16'],
                    ['ID', 'TASK_ID'],
                    [
                        'NAV_PARAMS' => [
                            'nPageSize' => 2,
                        ],
                    ],
                ]
            );
    
        $result2 = $response2
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result2, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error getting elapsed time records: ' . $e->getMessage();
    }
  • BX24.js
    // Получить все записи о затраченном времени с сортировкой по ID в нисходящем порядке.
    // Будут отфильтрованы только те записи, ID которых имеет значение меньше 50.
    BX24.callMethod(
        'task.elapseditem.getlist',
        [
            1, 
            {'ID': 'desc'},
            {'<ID': 50}
        ],
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
    // Получение выборки по затраченному времени на основании общих условий фильтрации. Например, выбрать данные о трудозатратах с указанной даты:
    BX24.callMethod(
        'task.elapseditem.getlist',
        [
            {'ID': 'desc'}, 
            {'>=CREATED_DATE': '2024-02-16'},
            ['ID', 'TASK_ID'],
            {"NAV_PARAMS":{
                    "nPageSize":2
                }
            },
        ],
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'task.elapseditem.getlist',
        [
            "ORDER" => ["ID" => "DESC"],            // Сортировка по ID - по убыванию
            "FILTER" => [">ID" => 1],               // Фильтр
            "SELECT" => ['ID', 'TASK_ID'],          // Выборка - только ID записи и задачи
            "PARAMS" => ['NAV_PARAMS' => [          // Постраничка
                    "nPageSize" => 2,                   // по 2 элемента на странице
                    'iNumPage' => 2                     // страница номер 2
                ]
            ],
        ]
    );

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

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

HTTP-статус: 200

{
    "result":[
        {
            "ID": "1",
            "TASK_ID": "691",
            "USER_ID": "1",
            "COMMENT_TEXT": "1",
            "SECONDS": "3600",
            "MINUTES": "60",
            "SOURCE": "2",
            "CREATED_DATE": "2024-05-16T10:33:00+02:00",
            "DATE_START": "2024-05-16T10:33:15+02:00",
            "DATE_STOP": "2024-05-16T10:33:15+02:00"
        }
    ],
    "total": 1,
    "time":{
        "start":1712137817.343984,
        "finish":1712137817.605804,
        "duration":0.26182007789611816,
        "processing":0.018325090408325195,
        "date_start":"2024-04-03T12:50:17+03:00",
        "date_finish":"2024-04-03T12:50:17+03:00"
    }
}

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

Название
тип
Описание
result
array
Массив объектов с информацией о записях о затраченном времени по задаче
total
integer
Общее количество найденных записей
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
    "error":"ERROR_CORE",
    "error_description":"ACTION_NOT_ALLOWED"
}

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

КодОписание
0x100002Доступ запрещен
0x000004Действие не разрешено
0x000040Неизвестная ошибка
0x000100Переданы неверные параметры метода
  • [](./index)
  • [](./task-elapsed-item-add)
  • [](./task-elapsed-item-update)
  • [](./task-elapsed-item-get)
  • [](./task-elapsed-item-delete)
  • [](./task-elapsed-item-is-action-allowed)
  • [](./task-elapsed-item-get-manifest)

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

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к task.elapseditem.getlist, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Получить список записей о затраченном времени task.elapseditem.getlist».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

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

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

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

Related Post

Настройка автоматического масштабирования веб-кластера 1С-Битрикс в Yandex CloudНастройка автоматического масштабирования веб-кластера 1С-Битрикс в Yandex Cloud

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Настройка автоматического масштабирования веб-кластера 1С-Битрикс в Yandex Cloud» обеспечивает динамическое добавление серверов

Как использовать метод SDK crm.lead.fields в Битрикс24Как использовать метод SDK crm.lead.fields в Битрикс24

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Как использовать метод SDK crm.lead.fields в Битрикс24». Мы подготовили подробный разбор принципов работы и развернутые

Как использовать метод SDK sale.status.add в Битрикс24Как использовать метод SDK sale.status.add в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK sale.status.add в Битрикс24», проанализируем