Получение элементов Смарт-процессов
Примеры получения элементов Смарт-процессов в Битрикс24 с использованием PHP, включая фильтрацию и выбор полей.
Описание
Смарт-процессы в Битрикс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()
.