Описание

В Битрикс24 задачи часто связаны с элементами CRM, такими как компании, контакты, сделки или лиды. Этот раздел содержит примеры PHP-кода, демонстрирующие, как получить список ID задач, которые привязаны к определенной сущности CRM. Это позволяет автоматизировать процессы, связанные с анализом загрузки по клиентам, контролем выполнения задач по проектам или формированием отчетов.

Примеры использования

Пример 1: Получение задач, связанных с компанией

Этот пример показывает, как получить ID всех задач, связанных с конкретной компанией.

use Bitrix\Tasks\Internals\TaskTable;
use Bitrix\Main\Loader;

Loader::includeModule('tasks');
Loader::includeModule('crm');

// ID компании, задачи которой нужно получить
$companyId = 1; // Замените на реальный ID компании

$taskIDs = [];
$res = TaskTable::getList([
    'filter' => [
        '=UF_CRM_TASK' => 'C_' . $companyId, // Связь с компанией
    ],
    'select' => ['ID'],
]);

while ($task = $res->fetch()) {
    $taskIDs[] = $task['ID'];
}

$this->TrackingService->WriteToTrackingService("Найдено " . count($taskIDs) . " задач, связанных с компанией " . $companyId . ".");

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("CompanyTaskIDs", $taskIDs);

Пример 2: Получение задач, связанных с контактом

Этот пример демонстрирует, как получить ID всех задач, связанных с конкретным контактом.

use Bitrix\Tasks\Internals\TaskTable;
use Bitrix\Main\Loader;

Loader::includeModule('tasks');
Loader::includeModule('crm');

// ID контакта, задачи которого нужно получить
$contactId = 2; // Замените на реальный ID контакта

$taskIDs = [];
$res = TaskTable::getList([
    'filter' => [
        '=UF_CRM_TASK' => 'CONTACT_' . $contactId, // Связь с контактом
    ],
    'select' => ['ID'],
]);

while ($task = $res->fetch()) {
    $taskIDs[] = $task['ID'];
}

$this->TrackingService->WriteToTrackingService("Найдено " . count($taskIDs) . " задач, связанных с контактом " . $contactId . ".");

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("ContactTaskIDs", $taskIDs);

Пример 3: Получение задач, связанных со сделкой

Этот пример показывает, как получить ID всех задач, связанных с конкретной сделкой.

use Bitrix\Tasks\Internals\TaskTable;
use Bitrix\Main\Loader;

Loader::includeModule('tasks');
Loader::includeModule('crm');

// ID сделки, задачи которой нужно получить
$dealId = 3; // Замените на реальный ID сделки

$taskIDs = [];
$res = TaskTable::getList([
    'filter' => [
        '=UF_CRM_TASK' => 'D_' . $dealId, // Связь со сделкой
    ],
    'select' => ['ID'],
]);

while ($task = $res->fetch()) {
    $taskIDs[] = $task['ID'];
}

$this->TrackingService->WriteToTrackingService("Найдено " . count($taskIDs) . " задач, связанных со сделкой " . $dealId . ".");

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("DealTaskIDs", $taskIDs);

Пример 4: Получение задач, связанных с лидом

Этот пример демонстрирует, как получить ID всех задач, связанных с конкретным лидом.

use Bitrix\Tasks\Internals\TaskTable;
use Bitrix\Main\Loader;

Loader::includeModule('tasks');
Loader::includeModule('crm');

// ID лида, задачи которого нужно получить
$leadId = 4; // Замените на реальный ID лида

$taskIDs = [];
$res = TaskTable::getList([
    'filter' => [
        '=UF_CRM_TASK' => 'L_' . $leadId, // Связь с лидом
    ],
    'select' => ['ID'],
]);

while ($task = $res->fetch()) {
    $taskIDs[] = $task['ID'];
}

$this->TrackingService->WriteToTrackingService("Найдено " . count($taskIDs) . " задач, связанных с лидом " . $leadId . ".");

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("LeadTaskIDs", $taskIDs);

Параметры

  • $companyId (int): ID компании.
  • $contactId (int): ID контакта.
  • $dealId (int): ID сделки.
  • $leadId (int): ID лида.

Возвращаемые значения

  • CompanyTaskIDs (array): Массив целых чисел, содержащий ID задач, связанных с компанией.
  • ContactTaskIDs (array): Массив целых чисел, содержащий ID задач, связанных с контактом.
  • DealTaskIDs (array): Массив целых чисел, содержащий ID задач, связанных со сделкой.
  • LeadTaskIDs (array): Массив целых чисел, содержащий ID задач, связанных с лидом.

Рекомендации по использованию

  • Всегда проверяйте наличие необходимых модулей (tasks, crm) с помощью Loader::includeModule().
  • Убедитесь, что ID сущностей CRM (компании, контакта, сделки, лида) соответствуют реальным данным.
  • Поле UF_CRM_TASK используется для связи задач с элементами CRM. Формат значения: [Тип сущности]_[ID сущности], где Тип сущности может быть C (компания), CONTACT (контакт), D (сделка), L (лид).
  • Результаты операций передаются в переменные бизнес-процесса с помощью SetVariable().