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

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

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Добавить конфигурируемое дело crm.activity.configurable.add», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.

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

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

Метод crm.activity.configurable.add добавляет конфигурируемое дело в таймлайн.

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

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

Название
тип
Описание
ownerTypeId
integer
Целочисленный идентификатор типа собъекта CRM, в котором создаем дело, например 2 для сделки
ownerId
integer
Целочисленный идентификатор элемента CRM, в котором создаем дело, например 1
fields
array
Ассоциативный массив значений полей дела в виде структуры:

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

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

Название
тип
Описание
typeId
string
Тип конфигурируемого дела. Если значение не указано, то оно устанавливается в значение по умолчанию CONFIGURABLE. Если указано, то значение должно соответствовать одному из типов, созданных методом crm.activity.type.add с полем IS_CONFIGURABLE_TYP0 равным Y в контексте того же приложения
completed
boolean
Флаг, говорящий закрыто ли дело. Для установки значения можно использовать Y/N, 1/0, true/false
deadline
datetime
Крайний срок исполнения дела
pingOffsets
array
Массив смещений в минутах относительно крайнего срока, определяющий когда нужно сформировать записи-пинги по этому делу
isIncomingChannel
boolean
Флаг, говорящий создано ли дело из входящего канала. Для установки значения можно использовать Y/N, 1/0, true/false
responsibleId
integer
Ответственный за дело
badgeCode
string
Код значка на канбане, соответствующего делу
originatorId
string
Идентификатор источника данных
originId
string
Идентификатор элемента в источнике данных

Примеры кода

  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"ownerTypeId":1,"ownerId":999,"fields":{"typeId":"CONFIGURABLE","completed":true,"deadline":"**put_current_date_time_here**","pingOffsets":[60,300],"isIncomingChannel":"N","responsibleId":1,"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.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		"crm.activity.configurable.add",
    		{
    			ownerTypeId: 1,
    			ownerId: 999,
    			fields:
    			{
    				typeId: 'CONFIGURABLE',
    				completed: true,
    				deadline: new Date(),
    				pingOffsets: [60, 300],
    				isIncomingChannel: 'N',
    				responsibleId: 1,
    				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.add',
                [
                    'ownerTypeId' => 1,
                    'ownerId' => 999,
                    'fields' => [
                        'typeId' => 'CONFIGURABLE',
                        'completed' => true,
                        'deadline' => new DateTime(),
                        'pingOffsets' => [60, 300],
                        'isIncomingChannel' => 'N',
                        'responsibleId' => 1,
                        '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 adding configurable activity: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "crm.activity.configurable.add",
        {
            ownerTypeId: 1,
            ownerId: 999,
            fields:
            {
                typeId: 'CONFIGURABLE',
                completed: true,
                deadline: new Date(),
                pingOffsets: [60, 300],
                isIncomingChannel: 'N',
                responsibleId: 1,
                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.add',
        [
            'ownerTypeId' => 1,
            'ownerId' => 999,
            'fields' => [
                'typeId' => 'CONFIGURABLE',
                'completed' => true,
                'deadline' => date('c'), // Используем текущую дату и время в формате ISO 8601
                'pingOffsets' => [60, 300],
                'isIncomingChannel' => 'N',
                'responsibleId' => 1,
                '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Недостаточно прав для выполнения операции
100Не заполнены обязательные поля
ERROR_WRONG_CONTEXTВызов метода возможен только в контексте приложения
ERROR_WRONG_APPLICATIONОбновить дело может только приложение, которое его создало
WRONG_FIELD_VALUEНекорректное значение поля
INCOMING_ACTIVITY_CAN_NOT_BE_WITH_DEADLINEВходящее дело не может иметь крайний срок
ERROR_EMPTY_LAYOUTПоле layout должно быть заполнено
  • [](./crm-activity-configurable-update)
  • [](./crm-activity-configurable-get)

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

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

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

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

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

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

Related Post

При установке значений списка пользовательского поля onCrmLeadUserFieldSetEnu…При установке значений списка пользовательского поля onCrmLeadUserFieldSetEnu…

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

Настройка автоматической очистки кэша инфоблоков при обновлении ценНастройка автоматической очистки кэша инфоблоков при обновлении цен

Профессиональная поддержка, модернизация и оптимизация производительности сайта на 1С-Битрикс — это гарантия высокой конверсии, стабильности продаж и защиты от киберугроз. Услуга «Настройка автоматической очистки кэша инфоблоков при обновлении цен» включает

Получить массив элементов процесса rpa.item.listПолучить массив элементов процесса rpa.item.list

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