Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Обновить системное дело crm.activity.update», проанализируем лучшие практики и покажем, как правильно использовать crm.activity.update в реальных задачах.
Обновить системное дело crm.activity.update
> Scope: crm
>
> Кто может выполнять метод: любой пользователь с правом на обновление дела
Метод crm.activity.update продолжает работать, но у него есть более актуальный аналог crm.activity.todo.update.
Метод crm.activity.update обновляет существующее дело.
Параметры метода
Названиетип | Описание |
|---|---|
idinteger | Целочисленный идентификатор дела в таймлайне, например 999 |
fieldsarray | Массив значений полей дела в виде структуры: |
Параметр fields {#fields}
Поле тип | Описание | |
|---|---|---|
OWNER_IDinteger | Идентификатор элемента CRM | |
OWNER_TYPE_IDinteger | Идентификатор типа объекта CRM | |
TYPE_IDcrm_enum_activitytype | Тип дела | |
ASSOCIATED_ENTITY_IDinteger | Идентификатор связанного с делом элемента | |
COMMUNICATIONScrm_activity_communication | Описание коммуникации | |
DEADLINEdatetime | Дата и время срока исполнения дела. Поле напрямую не устанавливается, значение берётся из START_TIME для звонка и встречи и из END_TIME для задачи | |
DESCRIPTIONstring | Текстовое описание дела | |
DESCRIPTION_TYPEcrm.enum.contenttype | Тип описания | |
DIRECTIONcrm.enum.activitydirection | Направление дела: входящее/исходящее. Актуально для звонков и писем, для встреч не используется | |
END_TIMEdatetime | Время завершения дела | |
FILESdiskfile | Добавленные в дело файлы | |
LOCATIONstring | Местоположение | |
NOTIFY_TYPEcrm.enum.activitynotifytype | Тип уведомления | |
ORIGINATOR_IDstring | Идентификатор источника данных, используется только для привязки к внешнему источнику | |
ORIGIN_IDstring | Идентификатор элемента в источнике данных, используется только для привязки к внешнему источнику | |
ORIGIN_VERSIONstring | Оригинальная версия, используется для защиты данных от случайного перетирания внешней системой. Если данные были импортированы и не изменялись во внешней системе, то такие данные могут быть редактированы в CRM без опасения, что следующая выгрузка приведет к перетиранию данных | |
PRIORITYcrm.enum.activitypriority | Приоритет | |
PROVIDER_DATAstring | Дополнительные данные провайдера | |
PROVIDER_GROUP_IDstring | Идентификатор группы провайдера | |
PROVIDER_IDstring | Идентификатор провайдера | |
PROVIDER_TYPE_IDstring | Идентификатор типа провайдера, статус из справочника | |
PROVIDER_PARAMSobject | Дополнительные параметры провайдера | |
RESPONSIBLE_ID*user | Идентификатор пользователя, ответственного за дело | |
SETTINGSobject | Дополнительные настройки | |
START_TIMEdatetime | Время начала выполнения дела | |
STATUScrm_enum_activitystatus | Статус дела | |
SUBJECTstring | Дополнительное описание дела | |
WEBDAV_ELEMENTSdiskfile | Добавленные файлы. Устарел, сохраняется для совместимости | |
IS_INCOMING_CHANNELchar | Флаг, говорящий дело создано из входящего канала или нет (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
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultboolean | Результат операции. Возвращает true если дело успешно изменено, иначе — false |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
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 и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru