При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Добавить системное дело crm.activity.add», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.
Добавить системное дело crm.activity.add
> Scope: crm
>
> Кто может выполнять метод: пользователь с правом на добавление дела
Метод crm.activity.add продолжает работать, но у него есть более актуальный аналог crm.activity.todo.add.
Метод crm.activity.add создает новое системное дело.
Параметры метода
Названиетип | Описание |
|---|---|
fieldsarray | Массив значений полей дела в виде структуры:Имеется дополнительное поле |
Параметр fields {#fields}
Поле тип | Описание | |
|---|---|---|
OWNER_IDinteger | Идентификатор элемента CRM | |
OWNER_TYPE_IDinteger | Идентификатор типа объекта CRM | |
TYPE_IDcrm_enum_activitytype | Тип дела. Чтобы получить доступные типы дел, используйте метод crm.enum.activitytype. Чтобы создать дело с типом «задача», используйте метод создания или изменения задачи и укажите элемент CRM в поле | |
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_IDuser | Идентификатор пользователя, ответственного за дело | |
SETTINGSobject | Дополнительные настройки | |
START_TIMEdatetime | Время начала выполнения дела | |
STATUScrm_enum_activitystatus | Статус дела | |
SUBJECTstring | Дополнительное описание дела | |
WEBDAV_ELEMENTSdiskfile | Добавленные файлы. Устарел, сохраняется для совместимости | |
IS_INCOMING_CHANNELchar | Флаг, говорящий дело создано из входящего канала или нет (Y/N) |
Варианты использования значений полей
Для дел типа e-mail:
- если письмо не должно быть отправлено, устанавливайте параметры
DIRECTION=2иCOMPLETED='N'; - если необходимо пометить письма как завершенные, выполните обновление дел с выставлением флага завершения.
Примеры кода
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"OWNER_TYPE_ID":2,"OWNER_ID":102,"TYPE_ID":2,"COMMUNICATIONS":[{"VALUE":"+79832322323","ENTITY_ID":134,"ENTITY_TYPE_ID":3}],"SUBJECT":"Новый звонок","START_TIME":"2023-12-31T12:00:00+00:00","END_TIME":"2023-12-31T12:30:00+00:00","COMPLETED":"N","PRIORITY":3,"RESPONSIBLE_ID":1,"DESCRIPTION":"Важный звонок","DESCRIPTION_TYPE":3,"DIRECTION":2,"FILES":[{"fileData":["example.jpg","base64_encoded_content_here"]}]} }' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.activity.add- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"OWNER_TYPE_ID":2,"OWNER_ID":102,"TYPE_ID":2,"COMMUNICATIONS":[{"VALUE":"+79832322323","ENTITY_ID":134,"ENTITY_TYPE_ID":3}],"SUBJECT":"Новый звонок","START_TIME":"2023-12-31T12:00:00+00:00","END_TIME":"2023-12-31T12:30:00+00:00","COMPLETED":"N","PRIORITY":3,"RESPONSIBLE_ID":1,"DESCRIPTION":"Важный звонок","DESCRIPTION_TYPE":3,"DIRECTION":2,"FILES":[{"fileData":["example.jpg","base64_encoded_content_here"]}]},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.activity.add- JS
try
{
const response = await $b24.callMethod(
"crm.activity.add",
{
fields: {
"OWNER_TYPE_ID": 2,
"OWNER_ID": 102,
"TYPE_ID": 2,
"COMMUNICATIONS": [
{ VALUE: "+79832322323", ENTITY_ID: 134, ENTITY_TYPE_ID: 3 }
],
"SUBJECT": "Новый звонок",
"START_TIME": "2023-12-31T12:00:00+00:00", // Пример даты и времени
"END_TIME": "2023-12-31T12:30:00+00:00", // Пример даты и времени
"COMPLETED": "N",
"PRIORITY": 3,
"RESPONSIBLE_ID": 1,
"DESCRIPTION": "Важный звонок",
"DESCRIPTION_TYPE": 3,
"DIRECTION": 2,
"FILES": [
{
fileData: [
"example.jpg", // Имя файла
"base64_encoded_content_here" // Контент файла в формате base64
]
}
]
}
}
);
const result = response.getData().result;
console.dir(result);
}
catch( error )
{
console.error(error);
}- PHP
try {
$response = $b24Service
->core
->call(
'crm.activity.add',
[
'fields' => [
'OWNER_TYPE_ID' => 2,
'OWNER_ID' => 102,
'TYPE_ID' => 2,
'COMMUNICATIONS' => [
['VALUE' => '+79832322323', 'ENTITY_ID' => 134, 'ENTITY_TYPE_ID' => 3]
],
'SUBJECT' => 'Новый звонок',
'START_TIME' => '2023-12-31T12:00:00+00:00',
'END_TIME' => '2023-12-31T12:30:00+00:00',
'COMPLETED' => 'N',
'PRIORITY' => 3,
'RESPONSIBLE_ID' => 1,
'DESCRIPTION' => 'Важный звонок',
'DESCRIPTION_TYPE' => 3,
'DIRECTION' => 2,
'FILES' => [
[
'fileData' => [
'example.jpg',
'base64_encoded_content_here'
]
]
]
]
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
// Нужная вам логика обработки данных
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error adding activity: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
"crm.activity.add",
{
fields: {
"OWNER_TYPE_ID": 2,
"OWNER_ID": 102,
"TYPE_ID": 2,
"COMMUNICATIONS": [
{ VALUE: "+79832322323", ENTITY_ID: 134, ENTITY_TYPE_ID: 3 }
],
"SUBJECT": "Новый звонок",
"START_TIME": "2023-12-31T12:00:00+00:00", // Пример даты и времени
"END_TIME": "2023-12-31T12:30:00+00:00", // Пример даты и времени
"COMPLETED": "N",
"PRIORITY": 3,
"RESPONSIBLE_ID": 1,
"DESCRIPTION": "Важный звонок",
"DESCRIPTION_TYPE": 3,
"DIRECTION": 2,
"FILES": [
{
fileData: [
"example.jpg", // Имя файла
"base64_encoded_content_here" // Контент файла в формате base64
]
}
]
}
},
result => {
if (result.error()) {
console.error(result.error());
} else {
console.dir(result.data());
}
}
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'crm.activity.add',
[
'fields' => [
'OWNER_TYPE_ID' => 2,
'OWNER_ID' => 102,
'TYPE_ID' => 2,
'COMMUNICATIONS' => [
[
'VALUE' => '+79832322323',
'ENTITY_ID' => 134,
'ENTITY_TYPE_ID' => 3
]
],
'SUBJECT' => 'Новый звонок',
'START_TIME' => '2023-12-31T12:00:00+00:00', // Пример даты и времени
'END_TIME' => '2023-12-31T12:30:00+00:00', // Пример даты и времени
'COMPLETED' => 'N',
'PRIORITY' => 3,
'RESPONSIBLE_ID' => 1,
'DESCRIPTION' => 'Важный звонок',
'DESCRIPTION_TYPE' => 3,
'DIRECTION' => 2,
'FILES' => [
[
'fileData' => [
'example.jpg', // Имя файла
'base64_encoded_content_here' // Контент файла в формате base64
]
]
]
]
]
);
if (isset($result['error'])) {
echo 'Ошибка: ' . $result['error_description'];
} else {
echo '<PRE>';
print_r($result['result']);
echo '</PRE>';
}Обработка ответа
HTTP-статус: 200
{
"result": 999,
"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 | Результат операции. Возвращает идентификатор дела в таймлайне в случае успеха, иначе — false |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
HTTP-статус: 400
{
"error": "",
"error_description": "Access denied."
}Возможные коды ошибок
| Код | Описание |
|---|---|
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 | Связи для дела не указаны |
— Email send error. Failed to load module "subscribe"— Email send error. Invalid data— Email send error. Invalid email is specified— Email send error. "From" is not found— Email send error. "To" is not found— Email send error. Failed to add posting. Please see details below— Email send error. Failed to save posting file. Please see details below— Email send error. Failed to update activity— Email send error. General error | Ошибки «почтовых» дел |
The custom activity without provider is not supported in current context | Тип дела не поддерживается в заданном контексте |
Use crm.activity.configurable.add for this activity provider | Некорректный вызов метода для конфигурируемого дела |
Access denied | Отсутствуют права на добавление сущности в CRM |
Application context required | Некорректный параметр PROVIDER_ID для дела, созданного в контексте приложения |
- [](./crm-activity-update)
- [](./crm-activity-delete)
- [](./crm-activity-get)
- [](./crm-activity-list)
- [](./crm-activity-communication-fields)
- [](./crm-activity-fields)
- [](../../../../../tutorials/crm/how-to-add-crm-objects/how-to-add-activity-to-contact)
- [](../../../../../tutorials/crm/how-to-add-crm-objects/how-to-send-email)
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Добавить системное дело crm.activity.add»:
Использование современных стандартов D7 при работе с crm.activity.add позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru