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

Обновить конфигурируемое дело crm.activity.configurable.update

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Обновить конфигурируемое дело crm.activity.configurable.update». Вы узнаете экспертные методики работы с crm.activity.configurable.update и научитесь избегать типичных ошибок начинающих разработчиков.

Обновить конфигурируемое дело crm.activity.configurable.update

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

Метод crm.activity.configurable.update вносит изменения в конфигурируемое дело.

Предупреждение
Вызов метода возможен только в контексте того приложения, которое его создало.

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

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

fields:
{
    "typeId": 'значение',
    "completed": 'значение',
    "deadline": 'значение',
    "pingOffsets": 'значение',
    "isIncomingChannel": 'значение',
    "responsibleId": 'значение',
    "badgeCode": 'значение',
    "originatorId": 'значение',
    "originId": 'значение',
}
layout*
LayoutDto
Ассоциативный массив особой структуры, описывающий внешний вид дела в таймлайне

Примеры кода

  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":999,"fields":{"typeId":"CONFIGURABLE","completed":false,"deadline":"**put_current_date_time_here**","pingOffsets":[300],"isIncomingChannel":"Y","responsibleId":5,"badgeCode":"CUSTOM"},"layout":{"icon":{"code":"call-completed"},"header":{"title":"Входящий звонок"},"body":{"logo":{"code":"call-incoming"},"blocks":{"responsible":{"type":"lineOfBlocks","properties":{"blocks":{"client":{"type":"link","properties":{"text":"Сергей Востриков","bold":true,"action":{"type":"redirect","uri":"/crm/lead/details/789/"}}},"phone":{"type":"text","properties":{"value":"+7 999 888 7777"}}}}}}},"footer":{"buttons":{"startCall":{"title":"О клиенте","action":{"type":"openRestApp","actionParams":{"clientId":456}},"type":"primary"}}}},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/crm.activity.configurable.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		"crm.activity.configurable.update",
    		{
    			id: 999,
    			fields:
    			{
    				typeId: 'CONFIGURABLE',
    				completed: false,
    				deadline: new Date(),
    				pingOffsets: [300],
    				isIncomingChannel: 'Y',
    				responsibleId: 5,
    				badgeCode: 'CUSTOM',
    			},
    			layout:
    			{
    				"icon": {
    					"code": "call-completed"
    				},
    				"header": {
    					"title": "Входящий звонок"
    				},
    				"body": {
    					"logo": {
    						"code": "call-incoming"
    					},
    					"blocks": {
    						"responsible": {
    							"type": "lineOfBlocks",
    							"properties": {
    								"blocks": {
    									"client": {
    										"type": "link",
    										"properties": {
    											"text": "Сергей Востриков",
    											"bold": true,
    											"action": {
    												"type": "redirect",
    												"uri": "/crm/lead/details/789/"
    											}
    										}
    									},
    									"phone": {
    										"type": "text",
    										"properties": {
    											"value": "+7 999 888 7777"
    										}
    									}
    								}
    							}
    						}
    					}
    				},
    				"footer": {
    					"buttons": {
    						"startCall": {
    							"title": "О клиенте",
    							"action": {
    								"type": "openRestApp",
    								"actionParams": {
    									"clientId": 456
    								}
    							},
    							"type": "primary"
    						}
    					}
    				}
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.dir(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'crm.activity.configurable.update',
                [
                    'id'     => 999,
                    'fields' => [
                        'typeId'            => 'CONFIGURABLE',
                        'completed'         => false,
                        'deadline'          => new DateTime(),
                        'pingOffsets'       => [300],
                        'isIncomingChannel' => 'Y',
                        'responsibleId'     => 5,
                        'badgeCode'         => 'CUSTOM',
                    ],
                    'layout' => [
                        'icon'   => [
                            'code' => 'call-completed',
                        ],
                        'header' => [
                            'title' => 'Входящий звонок',
                        ],
                        'body'   => [
                            'logo'   => [
                                'code' => 'call-incoming',
                            ],
                            'blocks' => [
                                'responsible' => [
                                    'type'       => 'lineOfBlocks',
                                    'properties' => [
                                        'blocks' => [
                                            'client' => [
                                                'type'       => 'link',
                                                'properties' => [
                                                    'text'   => 'Сергей Востриков',
                                                    'bold'   => true,
                                                    'action' => [
                                                        'type' => 'redirect',
                                                        'uri'  => '/crm/lead/details/789/',
                                                    ],
                                                ],
                                            ],
                                            'phone'  => [
                                                'type'       => 'text',
                                                'properties' => [
                                                    'value' => '+7 999 888 7777',
                                                ],
                                            ],
                                        ],
                                    ],
                                ],
                            ],
                        ],
                        'footer' => [
                            'buttons' => [
                                'startCall' => [
                                    'title'  => 'О клиенте',
                                    'action' => [
                                        'type'         => 'openRestApp',
                                        'actionParams' => [
                                            'clientId' => 456,
                                        ],
                                    ],
                                    'type'   => 'primary',
                                ],
                            ],
                        ],
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error updating configurable activity: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.activity.configurable.update",
        {
            id: 999,
            fields:
            {
                typeId: 'CONFIGURABLE',
                completed: false,
                deadline: new Date(),
                pingOffsets: [300],
                isIncomingChannel: 'Y',
                responsibleId: 5,
                badgeCode: 'CUSTOM',
            },
            layout:
            {
                "icon": {
                    "code": "call-completed"
                },
                "header": {
                    "title": "Входящий звонок"
                },
                "body": {
                    "logo": {
                        "code": "call-incoming"
                    },
                    "blocks": {
                        "responsible": {
                            "type": "lineOfBlocks",
                            "properties": {
                                "blocks": {
                                    "client": {
                                        "type": "link",
                                        "properties": {
                                            "text": "Сергей Востриков",
                                            "bold": true,
                                            "action": {
                                                "type": "redirect",
                                                "uri": "/crm/lead/details/789/"
                                            }
                                        }
                                    },
                                    "phone": {
                                        "type": "text",
                                        "properties": {
                                            "value": "+7 999 888 7777"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "footer": {
                    "buttons": {
                        "startCall": {
                            "title": "О клиенте",
                            "action": {
                                "type": "openRestApp",
                                "actionParams": {
                                    "clientId": 456
                                }
                            },
                            "type": "primary"
                        }
                    }
                }
            }
        }, result => {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }    
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'crm.activity.configurable.update',
        [
            'id' => 999,
            'fields' => [
                'typeId' => 'CONFIGURABLE',
                'completed' => false,
                'deadline' => date('c'), // Используем текущую дату и время в формате ISO 8601
                'pingOffsets' => [300],
                'isIncomingChannel' => 'Y',
                'responsibleId' => 5,
                'badgeCode' => 'CUSTOM',
            ],
            'layout' => [
                'icon' => [
                    'code' => 'call-completed'
                ],
                'header' => [
                    'title' => 'Входящий звонок'
                ],
                'body' => [
                    'logo' => [
                        'code' => 'call-incoming'
                    ],
                    'blocks' => [
                        'responsible' => [
                            'type' => 'lineOfBlocks',
                            'properties' => [
                                'blocks' => [
                                    'client' => [
                                        'type' => 'link',
                                        'properties' => [
                                            'text' => 'Сергей Востриков',
                                            'bold' => true,
                                            'action' => [
                                                'type' => 'redirect',
                                                'uri' => '/crm/lead/details/789/'
                                            ]
                                        ]
                                    ],
                                    'phone' => [
                                        'type' => 'text',
                                        'properties' => [
                                            'value' => '+7 999 888 7777'
                                        ]
                                    ]
                                ]
                            ]
                        ]
                    ]
                ],
                'footer' => [
                    'buttons' => [
                        'startCall' => [
                            'title' => 'О клиенте',
                            'action' => [
                                'type' => 'openRestApp',
                                'actionParams' => [
                                    'clientId' => 456
                                ]
                            ],
                            'type' => 'primary'
                        ]
                    ]
                ]
            ]
        ]
    );

    if (isset($result['error'])) {
        echo 'Ошибка: ' . $result['error_description'];
    } else {
        echo '<PRE>';
        print_r($result['result']);
        echo '</PRE>';
    }

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

HTTP-статус: 200

{
    "result": {
        "activity": {
            "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."
}

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

КодОписание
ACCESS_DENIEDНедостаточно прав для выполнения операции
NOT_FOUNDЭлемент не найден
100Не заполнены обязательные поля
ERROR_WRONG_CONTEXTВызов метода возможен только в контексте приложения
ERROR_WRONG_APPLICATIONОбновить дело может только приложение, которое его создало
WRONG_FIELD_VALUEНекорректное значение поля
INCOMING_ACTIVITY_CAN_NOT_BE_WITH_DEADLINEВходящее дело не может иметь крайний срок
ERROR_EMPTY_LAYOUTПоле layout должно быть заполнено
  • [](./crm-activity-configurable-add)
  • [](./crm-activity-configurable-get)

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

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

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

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

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

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

Related Post

При удалении заказа из базы OnOrderDeletedПри удалении заказа из базы OnOrderDeleted

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

Удалить оплату crm.item.payment.deleteУдалить оплату crm.item.payment.delete

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

Событие при удалении записи из листа ожидания onBookingWaitListItemDeleteСобытие при удалении записи из листа ожидания onBookingWaitListItemDelete

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