On this page
event
Работа с активностями (делами) лидов
Примеры PHP-кода для получения и создания активностей (дел), связанных с лидами в Битрикс24.
Получение активностей, связанных с лидом
Этот PHP-код позволяет получить список активностей (дел), связанных с определенным лидом в Битрикс24.
use Bitrix\Crm\ActivityTable;
use Bitrix\Crm\Activity\Provider\Call;
use Bitrix\Crm\Activity\Provider\Meeting;
// ID лида, для которого ищем активности
$leadId = $this->GetRootActivity()->GetVariable("LeadID");
$foundActivitiesCount = 0;
$activityList = [];
$errorMessage = '';
if (!$leadId) {
$errorMessage = "КРИТИЧНО: Не указан ID лида для поиска активностей.";
$this->WriteToTrackingService($errorMessage);
} else {
$arFilter = [
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $leadId,
];
$arSelect = [
'ID', 'SUBJECT', 'TYPE_ID', 'COMPLETED', 'DEADLINE',
'OWNER_TYPE_ID', 'OWNER_ID', 'DESCRIPTION', 'PROVIDER_ID'
];
$arActivities = ActivityTable::getList([
'order' => ['DEADLINE' => 'DESC'],
'filter' => $arFilter,
'select' => $arSelect,
'cache' => ['ttl' => 3600]
])->fetchAll();
foreach ($arActivities as $activity) {
$activityList[] = [
'ID' => $activity['ID'],
'SUBJECT' => $activity['SUBJECT'],
'TYPE' => \CCrmActivityType::ResolveName($activity['TYPE_ID']),
'COMPLETED' => $activity['COMPLETED'] === 'Y' ? 'Да' : 'Нет',
'DEADLINE' => $activity['DEADLINE'],
'DESCRIPTION' => $activity['DESCRIPTION'],
'PROVIDER' => $activity['PROVIDER_ID']
];
}
$foundActivitiesCount = count($activityList);
}
$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("FoundActivitiesCount", $foundActivitiesCount);
$rootActivity->SetVariable("ActivityList", $activityList);
$rootActivity->SetVariable("ActivitySearchErrorMessage", $errorMessage);
Параметры
LeadID
(int): ID лида, для которого необходимо получить активности.
Возвращаемые значения
FoundActivitiesCount
(int): Количество найденных активностей.ActivityList
(array): Массив найденных активностей, каждая из которых содержит ID, SUBJECT, TYPE, COMPLETED, DEADLINE, DESCRIPTION, PROVIDER.ActivitySearchErrorMessage
(string): Сообщение об ошибке, если поиск не удался.
Рекомендации по использованию
- Используйте этот скрипт для получения списка всех активностей, связанных с конкретным лидом.
- Результат
ActivityList
может быть использован для дальнейшего анализа или отображения.
Создание новой активности (звонка или встречи) для лида
Данный скрипт демонстрирует, как создать новую активность (например, звонок или встречу) и связать ее с лидом.
use Bitrix\Crm\ActivityTable;
use Bitrix\Crm\Activity\Provider\Call;
use Bitrix\Crm\Activity\Provider\Meeting;
use Bitrix\Main\Type\DateTime;
// ID лида, к которому будет привязана активность
$ownerId = $this->GetRootActivity()->GetVariable("OwnerID"); // ID лида
// Параметры новой активности
$activitySubject = $this->GetRootActivity()->GetVariable("ActivitySubject");
$activityDescription = $this->GetRootActivity()->GetVariable("ActivityDescription");
$activityDeadline = new DateTime($this->GetRootActivity()->GetVariable("ActivityDeadline"));
$activityResponsibleId = $this->GetRootActivity()->GetVariable("ResponsibleUserID");
$activityTypeId = $this->GetRootActivity()->GetVariable("ActivityType"); // Например, \CCrmActivityType::Call или \CCrmActivityType::Meeting
$activityProviderId = $this->GetRootActivity()->GetVariable("ActivityProvider"); // Например, Call::ACTIVITY_PROVIDER_ID или Meeting::ACTIVITY_PROVIDER_ID
$activityProviderTypeId = $this->GetRootActivity()->GetVariable("ActivityProviderType"); // Например, Call::PROVIDER_TYPE_CALL или Meeting::PROVIDER_TYPE_MEETING
$newActivityId = null;
$activityCreationStatus = false;
$errorMessage = '';
if (!$ownerId || !$activityResponsibleId || !$activitySubject || !$activityDeadline || !$activityTypeId || !$activityProviderId || !$activityProviderTypeId) {
$errorMessage = "КРИТИЧНО: Не все обязательные параметры для создания активности указаны.";
$this->WriteToTrackingService($errorMessage);
} else {
$fields = [
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $ownerId,
'TYPE_ID' => $activityTypeId,
'SUBJECT' => $activitySubject,
'DESCRIPTION' => $activityDescription,
'DEADLINE' => $activityDeadline,
'COMPLETED' => 'N',
'PRIORITY' => \CCrmActivityPriority::Medium,
'RESPONSIBLE_ID' => $activityResponsibleId,
'AUTHOR_ID' => $activityResponsibleId,
'PROVIDER_ID' => $activityProviderId,
'PROVIDER_TYPE_ID' => $activityProviderTypeId,
'DIRECTION' => \Bitrix\Crm\ActivityDirection::Outgoing,
];
$result = ActivityTable::add($fields);
if ($result->isSuccess()) {
$newActivityId = $result->getId();
$activityCreationStatus = true;
} else {
$errorMessage = "ОШИБКА: Не удалось создать активность. " . implode(', ', $result->getErrorMessages());
$this->WriteToTrackingService($errorMessage);
}
}
$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("NewActivityID", $newActivityId);
$rootActivity->SetVariable("ActivityCreationStatus", $activityCreationStatus);
$rootActivity->SetVariable("ActivityCreationErrorMessage", $errorMessage);
Параметры
OwnerID
(int): ID лида, к которому будет привязана активность.ActivitySubject
(string): Тема активности.ActivityDescription
(string): Описание активности.ActivityDeadline
(string): Дата и время завершения активности (в формате ‘YYYY-MM-DD HH:MM:SS’).ResponsibleUserID
(int): ID ответственного пользователя.ActivityType
(int): Тип активности (например,\CCrmActivityType::Call
для звонка,\CCrmActivityType::Meeting
для встречи).ActivityProvider
(string): Провайдер активности (например,Call::ACTIVITY_PROVIDER_ID
для звонка,Meeting::ACTIVITY_PROVIDER_ID
для встречи).ActivityProviderType
(string): Тип провайдера активности (например,Call::PROVIDER_TYPE_CALL
для звонка,Meeting::PROVIDER_TYPE_MEETING
для встречи).
Возвращаемые значения
NewActivityID
(int): ID созданной активности.ActivityCreationStatus
(bool): Статус операции создания (true - успешно, false - ошибка).ActivityCreationErrorMessage
(string): Сообщение об ошибке, если операция не удалась.
Рекомендации по использованию
- Используйте этот скрипт для автоматического создания звонков, встреч или других активностей, связанных с лидами.
- Убедитесь, что все обязательные параметры переданы для успешного создания активности.