При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как создать дело из приложения», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.
Как создать дело из приложения
Приложения могут создавать дела с провайдером специального типа. У такого дела будет соответствующая иконка в таймлайн. По клиику на дело откроется приложение в слайдере с опциями в PLACEMENT_OPTIONS
Изменять/удалять дела с провайдером специального типа можно только в контексте приложения, которым дело создано. При обновлении такого дела методом crm.activity.update через вебхук будет ошибка:
Access denied! Application context required.Входящие параметры и конфигурация метода
Названиетип | Описание |
|---|---|
PROVIDER_IDstring | Идентификатор провайдера. Для специального типа значение должно быть равно REST_APP |
PROVIDER_TYPE_IDstring | Идентификатор типа дела. В случае использования провайдера REST_APP разработчик может указывать произвольные идентификаторы типа в зависимости от своих задач |
Пример приложения
- PHP
<?php
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
</style>
</head>
<body style="display: none">
<script src="//api.bitrix24.com/api/v1/"></script>
<?if (isset($_POST['PLACEMENT']) && !empty($_POST['PLACEMENT_OPTIONS'])):
$opt = json_decode($_POST['PLACEMENT_OPTIONS'], true);
?>
<p>Activity ID: <?= (int)$opt['activity_id']?></p>
<button onclick="updateActivity(<?= (int)$opt['activity_id']?>);">Update activity (set new description + completed)</button>
<p><button onclick="deleteActivity(<?= (int)$opt['activity_id']?>);">Delete activity</button>
<?else:?>
<button onclick="selectCRMEntity();">Select LEAD</button>
<span id="selected-entity"></span>
<p>
<button onclick="addActivity();">Add activity</button>
<?endif;?>
<script type="text/javascript">
BX24.init(function()
{
document.body.style.display = '';
});
var selectedEntityId = null;
function addActivity()
{
if (!selectedEntityId)
{
alert('Lead not selected');
return;
}
BX24.callMethod(
'crm.activity.add',
{
fields:
{
"OWNER_TYPE_ID": 1,
"OWNER_ID": selectedEntityId,
"PROVIDER_ID": 'REST_APP',
"PROVIDER_TYPE_ID": 'LINK',
"SUBJECT": "Новое дело",
"COMPLETED": "N",
"RESPONSIBLE_ID": 1,
"DESCRIPTION": "Описание нового дела"
}
},
function(result)
{
if(result.error())
alert("Error: " + result.error());
else
{
alert("Success: " + result.data());
}
}
);
}
function updateActivity(id)
{
BX24.callMethod(
'crm.activity.update',
{
id: id,
fields:
{
COMPLETED: 'Y',
SUBJECT: "Дело выполнено!",
DESCRIPTION: "Описание нового дела (выполнено)"
}
},
function(result)
{
if(result.error())
alert("Error: " + result.error());
else
{
alert("Success: " + result.data());
}
}
);
}
function deleteActivity(id)
{
BX24.callMethod(
'crm.activity.delete',
{
id: id
},
function(result)
{
if(result.error())
alert("Error: " + result.error());
else
{
alert("Success: " + result.data());
}
}
);
}
function selectCRMEntity()
{
document.getElementById('selected-entity').textContent = '';
BX24.selectCRM({
entityType: ['lead']
}, function(selected)
{
if (selected['lead'] && selected['lead'][0])
{
document.getElementById('selected-entity').textContent = selected['lead'][0]['title'];
var id = selected['lead'][0]['id'];
selectedEntityId = id.substring(2);
console.log(selectedEntityId);
}
})
}
</script>
</body>
</html>[icon]: !иконка
💡 Экспертное мнение и рекомендации
Советы эксперта по интеграции:
- Всегда используйте кэширование при частых запросах к создать дело, чтобы разгрузить базу данных.
- Соблюдайте стандарты PSR при написании обработчиков для «Как создать дело из приложения».
- Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru