Блог Горошко Андрея Bitrix24,PHP Обновить системное дело crm.activity.update

Обновить системное дело crm.activity.update

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Обновить системное дело crm.activity.update», проанализируем лучшие практики и покажем, как правильно использовать crm.activity.update в реальных задачах.

Обновить системное дело crm.activity.update

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

Метод crm.activity.update продолжает работать, но у него есть более актуальный аналог crm.activity.todo.update.

Метод crm.activity.update обновляет существующее дело.

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

Название
тип
Описание
id
integer
Целочисленный идентификатор дела в таймлайне, например 999
fields
array
Массив значений полей дела в виде структуры:

fields:
{
    "OWNER_TYPE_ID": 2, 
    "OWNER_ID": 102, 
    "TYPE_ID": 2, 
    "SUBJECT": "Новый звонок",
}

Параметр fields {#fields}

Поле типОписание
OWNER_ID
integer
Идентификатор элемента CRM
OWNER_TYPE_ID
integer
Идентификатор типа объекта CRM
TYPE_ID
crm_enum_activitytype
Тип дела
ASSOCIATED_ENTITY_ID
integer
Идентификатор связанного с делом элемента
COMMUNICATIONS
crm_activity_communication
Описание коммуникации
DEADLINE
datetime
Дата и время срока исполнения дела. Поле напрямую не устанавливается, значение берётся из START_TIME для звонка и встречи и из END_TIME для задачи
DESCRIPTION
string
Текстовое описание дела
DESCRIPTION_TYPE
crm.enum.contenttype
Тип описания
DIRECTION
crm.enum.activitydirection
Направление дела: входящее/исходящее. Актуально для звонков и писем, для встреч не используется
END_TIME
datetime
Время завершения дела
FILES
diskfile
Добавленные в дело файлы
LOCATION
string
Местоположение
NOTIFY_TYPE
crm.enum.activitynotifytype
Тип уведомления
ORIGINATOR_ID
string
Идентификатор источника данных, используется только для привязки к внешнему источнику
ORIGIN_ID
string
Идентификатор элемента в источнике данных, используется только для привязки к внешнему источнику
ORIGIN_VERSION
string
Оригинальная версия, используется для защиты данных от случайного перетирания внешней системой. Если данные были импортированы и не изменялись во внешней системе, то такие данные могут быть редактированы в CRM без опасения, что следующая выгрузка приведет к перетиранию данных
PRIORITY
crm.enum.activitypriority
Приоритет
PROVIDER_DATA
string
Дополнительные данные провайдера
PROVIDER_GROUP_ID
string
Идентификатор группы провайдера
PROVIDER_ID
string
Идентификатор провайдера
PROVIDER_TYPE_ID
string
Идентификатор типа провайдера, статус из справочника
PROVIDER_PARAMS
object
Дополнительные параметры провайдера
RESPONSIBLE_ID*
user
Идентификатор пользователя, ответственного за дело
SETTINGS
object
Дополнительные настройки
START_TIME
datetime
Время начала выполнения дела
STATUS
crm_enum_activitystatus
Статус дела
SUBJECT
string
Дополнительное описание дела
WEBDAV_ELEMENTS
diskfile
Добавленные файлы. Устарел, сохраняется для совместимости
IS_INCOMING_CHANNEL
char
Флаг, говорящий дело создано из входящего канала или нет (Y/N)

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":999,"fields":{"RESPONSIBLE_ID":1,"DESCRIPTION":"Новое описание дела"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.activity.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":999,"fields":{"RESPONSIBLE_ID":1,"DESCRIPTION":"Новое описание дела"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.activity.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'crm.activity.update',
    		{
    			id: 999,
    			fields: {
    				"RESPONSIBLE_ID": 1, 
    				"DESCRIPTION": "Новое описание дела"
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.dir(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.activity.update',
                [
                    'id' => 999,
                    'fields' => [
                        "RESPONSIBLE_ID" => 1,
                        "DESCRIPTION" => "Новое описание дела"
                    ]
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error updating activity: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'crm.activity.update',
        {
            id: 999,
            fields: {
                "RESPONSIBLE_ID": 1, 
                "DESCRIPTION": "Новое описание дела"
            }
        },
        result => {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.dir(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'crm.activity.update',
        [
            'id' => 999,
            'fields' => [
                'RESPONSIBLE_ID' => 1,
                'DESCRIPTION' => 'Новое описание дела'
            ]
        ]
    );

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

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

HTTP-статус: 200

{
    "result": true,
    "time": {
        "start": 1712132792.910734,
        "finish": 1712132793.530359,
        "duration": 0.6196250915527344,
        "processing": 0.032338857650756836,
        "date_start": "2024-04-03T10:26:32+02:00",
        "date_finish": "2024-04-03T10:26:33+02:00",
        "operating_reset_at": 1705765533,
        "operating": 3.3076241016387939
    }
}

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

Название
тип
Описание
result
boolean
Результат операции. Возвращает true если дело успешно изменено, иначе — false
time
time
Информация о времени выполнения запроса

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

HTTP-статус: 400

{
    "error": "",
    "error_description": "Access denied."
}

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

КодОписание
Activity is not foundДело с указанным идентификатором не найдено для сущности в CRM
The field SUBJECT is not defined or emptyПоле SUBJECT не установлено
The field RESPONSIBLE_ID is not defined or invalidПоле RESPONSIBLE_ID не установлено
The field TYPE_ID is not defined or invalidПоле TYPE_ID не установлено
The field COMMUNICATIONS is not defined or invalidПоле COMMUNICATIONS не установлено
The only one communication is allowed for activity of specified typeКоличество контактов более 1
Could not build binding. Please ensure that owner info and communications are defined correctlyСвязи для дела не указаны
The custom activity without provider is not supported in current contextТип дела не поддерживается в заданном контексте
Use crm.activity.configurable.update for this activity providerНекорректный вызов метода для конфигур. дела
Access deniedОтсутствуют права на обновление сущности в CRM
Application context requiredНекорректный параметр PROVIDER_ID для дела, созданного в контексте приложения
  • [](./crm-activity-add)
  • [](./crm-activity-delete)
  • [](./crm-activity-get)
  • [](./crm-activity-list)
  • [](./crm-activity-communication-fields)
  • [](./crm-activity-fields)

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

Ключевые выводы по теме «Обновить системное дело crm.activity.update»:

Использование современных стандартов D7 при работе с crm.activity.update позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

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

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

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

Related Post

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

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

Как использовать метод SDK crm.item.details.configuration.get в Битрикс24Как использовать метод SDK crm.item.details.configuration.get в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.item.details.configuration.get в Битрикс24», разберем

Определить модели прав landing.role.isEnabledОпределить модели прав landing.role.isEnabled

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