Блог Горошко Андрея Bitrix24,PHP Добавить универсальное дело crm.activity.todo.add

Добавить универсальное дело crm.activity.todo.add

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

Добавить универсальное дело crm.activity.todo.add

> Scope: crm
>
> Кто может выполнять метод: пользователь с правом на редактирование элемента CRM, для которого дабавляется дело

Метод crm.activity.todo.add добавляет универсальное дело в таймлайн.

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

Название
тип
Описание
ownerTypeId
integer
Идентификатор типа объекта CRM, к которому привязано дело, например 2 для сделки
ownerId
integer
Идентификатор элемента CRM, к которому привязано дело, например, 1
deadline*
datetime
Крайний срок дела, например 2025-02-03T15:00:00
title
string
Название дела, по умолчанию пустая строка
description
string
Описание дела, по умолчанию пустая строка
responsibleId
integer
Идентификатор пользователя, ответственного за дело, например 1
parentActivityId
integer
Идентификатор дела в таймлайне, с которым можно связать создаваемое дело, например 888
pingOffsets
array
Массив, который содержит целочисленные значения в минутах, позволяющие настроить время напоминания о деле. Например [0, 15] означает, что будет создано 2 напоминания, которые придут за 15 минут до крайнего срока и в момент, когда крайний срок наступит. По умолчанию пустой массив, без напоминаний
colorId
string
Идентификатор цвета дела в таймлайне, например 1. Для выбора доступно 8 цветов, значения от 1 до 7 и цвет по умолчанию, если ничего не указано:

!Доступные цвета

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"ownerTypeId":2,"ownerId":1,"deadline":"'"$(date -Iseconds)"'","title":"Заголовок дела","description":"Описание дела","responsibleId":5,"pingOffsets":[0,15],"colorId":"2"}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.activity.todo.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"ownerTypeId":2,"ownerId":1,"deadline":"'"$(date -Iseconds)"'","title":"Заголовок дела","description":"Описание дела","responsibleId":5,"pingOffsets":[0,15],"colorId":"2","auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.activity.todo.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'crm.activity.todo.add',
    		{
    			ownerTypeId: 2,
    			ownerId: 1,
    			deadline: (new Date()),
    			title: 'Заголовок дела',
    			description: 'Описание дела',
    			responsibleId: 5,
    			pingOffsets: [0, 15],
    			colorId: '2'
    		}
    	);
    	
    	const result = response.getData().result;
    	if (result.error())
    	{
    		console.error(result.error());
    	}
    	else
    	{
    		console.dir(result);
    	}
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.activity.todo.add',
                [
                    'ownerTypeId'   => 2,
                    'ownerId'       => 1,
                    'deadline'      => (new DateTime()),
                    'title'         => 'Заголовок дела',
                    'description'   => 'Описание дела',
                    'responsibleId' => 5,
                    'pingOffsets'   => [0, 15],
                    'colorId'       => '2'
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding todo activity: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.activity.todo.add",
        {
            ownerTypeId: 2,
            ownerId: 1,
            deadline: (new Date()),
           'Заголовок дела',
            description: 'Описание дела',
            responsibleId: 5,
            pingOffsets: [0, 15],
            colorId: '2'
        }, 
        result => {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'crm.activity.todo.add',
        [
            'ownerTypeId' => 2,
            'ownerId' => 1,
            'deadline' => date('c'), // Текущие дата и время в формате ISO 8601
            'title' => 'Заголовок дела',
            'description' => 'Описание дела',
            'responsibleId' => 5,
            'pingOffsets' => [0, 15],
            'colorId' => '2'
        ]
    );

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

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

HTTP-статус: 200

{
    "result": {
        "id": 999
    },
    "time": {
       "start": 1724068028.331234,
        "finish": 1724068028.726591,
        "duration": 0.3953571319580078,
        "processing": 0.13033390045166016,
        "date_start": "2025-01-21T13:47:08+02:00",
        "date_finish": "2025-01-21T13:47:08+02:00",
        "operating": 0
    }
}

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

Название
тип
Описание
result
object
В случае успеха возвращает объект, содержащий идентификатор добавленного дела id, в случае ошибки = null
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
    "error": "NOT_FOUND",
    "error_description": "Not found."
}

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

КодОписание
100Не переданы обязательные поля
NOT_FOUNDЭлемент CRM не найден
ACCESS_DENIEDНедостаточно прав для выполнения операции
OWNER_NOT_FOUNDВладелец элемента не найден
WRONG_DATETIME_FORMATНекорректный формат даты
  • [](./crm-activity-todo-update)
  • [](./crm-activity-todo-update-deadline)
  • [](./crm-activity-todo-update-description)
  • [](./crm-activity-todo-update-color)
  • [](./crm-activity-todo-update-responsible-user)
  • [](../../../../../tutorials/crm/how-to-add-crm-objects/how-to-add-objects-with-crm-mode)

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

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

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

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

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

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

Related Post

Удалить дополнительное свойство элементов хранилища entity.item.property.deleteУдалить дополнительное свойство элементов хранилища entity.item.property.delete

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Удалить дополнительное свойство элементов хранилища entity.item.property.delete». Вы узнаете экспертные методики работы с entity.item.property.delete

Событие на обновление дела типа «Комментарий» onCrmTimelineCommentUpdateСобытие на обновление дела типа «Комментарий» onCrmTimelineCommentUpdate

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

Получить поля значений списочных свойств catalog.productPropertyEnum.getFieldsПолучить поля значений списочных свойств catalog.productPropertyEnum.getFields

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