Описание

Смарт-процессы в Битрикс24 — это гибкий инструмент для автоматизации любых бизнес-процессов, не связанных напрямую с классическими сущностями CRM (лиды, сделки, контакты, компании). Данный раздел содержит примеры PHP-кода, демонстрирующие получение элементов Смарт-процессов. Вы можете использовать эти примеры для выборки данных по различным критериям, что позволяет интегрировать Смарт-процессы с другими системами или использовать их данные в отчетах и аналитике.

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

Пример 1: Получение всех элементов Смарт-процесса по ID

Этот пример показывает, как получить все элементы определенного Смарт-процесса по его ID.

use Bitrix\Crm\Service\Container;
use Bitrix\Main\Loader;

Loader::includeModule('crm');

// ID типа Смарт-процесса
$entityTypeId = 147; // Замените на реальный ID вашего типа Смарт-процесса

$factory = Container::getInstance()->getFactory($entityTypeId);
$items = [];

if ($factory) {
    $items = $factory->getItems();
    $this->TrackingService->WriteToTrackingService("Получено " . count($items) . " элементов Смарт-процесса.");
} else {
    $this->TrackingService->WriteToTrackingService("Фабрика для типа Смарт-процесса " . $entityTypeId . " не найдена.");
}

$itemIDs = [];
foreach ($items as $item) {
    $itemIDs[] = $item->getId();
}

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("SmartProcessItemIDs", $itemIDs);

Пример 2: Получение элементов Смарт-процесса с фильтрацией

Этот пример демонстрирует, как получить элементы Смарт-процесса, применяя фильтр по пользовательскому полю.

use Bitrix\Crm\Service\Container;
use Bitrix\Main\Loader;
use Bitrix\Main\ORM\Query\Query;

Loader::includeModule('crm');

// ID типа Смарт-процесса
$entityTypeId = 147; // Замените на реальный ID вашего типа Смарт-процесса

// Код пользовательского поля и значение для фильтрации
$userFieldCode = 'UF_CRM_MY_FIELD'; // Замените на реальный код вашего пользовательского поля
$userFieldValue = 'Значение для поиска';

$factory = Container::getInstance()->getFactory($entityTypeId);
$items = [];

if ($factory) {
    $query = $factory->getDataClass()::query()
        ->setSelect(['ID', $userFieldCode])
        ->where($userFieldCode, $userFieldValue);

    $items = $query->exec()->fetchAll();
    $this->TrackingService->WriteToTrackingService("Получено " . count($items) . " элементов Смарт-процесса по фильтру.");
} else {
    $this->TrackingService->WriteToTrackingService("Фабрика для типа Смарт-процесса " . $entityTypeId . " не найдена.");
}

$filteredItemIDs = [];
foreach ($items as $item) {
    $filteredItemIDs[] = $item['ID'];
}

$rootActivity = $this->GetRootActivity();
$rootActivity->SetVariable("FilteredSmartProcessItemIDs", $filteredItemIDs);

Параметры

  • $entityTypeId (int): ID типа Смарт-процесса, из которого нужно получить элементы.
  • $userFieldCode (string): Код пользовательского поля для фильтрации.
  • $userFieldValue (mixed): Значение пользовательского поля для фильтрации.

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

  • SmartProcessItemIDs (array): Массив целых чисел, содержащий ID всех элементов Смарт-процесса.
  • FilteredSmartProcessItemIDs (array): Массив целых чисел, содержащий ID элементов Смарт-процесса, отфильтрованных по заданным критериям.

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

  • Всегда проверяйте наличие необходимых модулей (crm) с помощью Loader::includeModule().
  • Убедитесь, что entityTypeId соответствует реальному ID вашего Смарт-процесса.
  • Для работы с пользовательскими полями используйте их коды (например, UF_CRM_MY_FIELD).
  • Для сложных запросов используйте методы Query для построения фильтров и выборок.
  • Результаты операций передаются в переменные бизнес-процесса с помощью SetVariable().