Документация для разработчиков
Темная тема

Смарт-процессы

Одна из основных функций CRM - отслеживание, хранение и удобное отображение коммуникаций. При этом не всегда коммуникации - это продажи. Это могут быть какие-то внутренние процессы, обработка обращений в техподдержку, закупки и т.д. В этом случае есть потребность хранить и обрабатывать информацию и коммуникации не внутри лидов/сделок, а отдельно. Кроме того, часто в CRM хочется хранить много связанной информации, которая относится к продажам, но не является лидом/сделкой. Чтобы закрыть эту потребность в CRM с версии 20.700.0 появились смарт-процессы.

Что такое смарт-процесс

Каждый смарт-процесс - это новая сущность в рамках CRM, для которой создается новый раздел со своим интерфейсом, набором функционала, полями, элементами и т.д.

По-другому смарт-процесс можно назвать "Кастомная сущность CRM", "Универсальная сущность CRM" или "Динамический тип сущности CRM".

Смарт-процессы встроены в новое API CRM.

Данные

Концептуально смарт-процессы похожи на инфоблоки (универсальные списки). Каждый смарт-процесс - это тип инфоблока.

Ещё больше с точки зрения данных смарт-процессы похожи на rpa.

Механизм хранения значений пользовательских полей такой же, как в rpa и highloadblock.

Примечание: В структуру таблиц заложена возможность указания множественных ответственных для элементов смарт-процессов. Но на данный момент этот функционал ещё не готов до конца.

Особенности хранения данных элементов

Для каждого смарт-процесса имеется свой набор элементов. В этом плане иерархия аналогична инфоблокам, где процесс - это тип инфоблока, а элементы - это элементы инфоблока. Только вместо свойств инфоблока используются пользовательские поля из ядра.

Большая часть кода, отвечающего за хранение элементов и значений пользовательских свойств сосредоточена в папке modules/main/lib/userfield/internal

В этой статье можно прочитать подробно про общие процессы динамического создания таблиц и колонок.

Системные поля

Все таблицы элементов смарт-процессов имеют набор системных полей, см подробнее \Bitrix\Crm\Model\Dynamic\PrototypeItem.

Несмотря на то, что часть полей элементов смарт-процесса можно скрыть через настройки смарт-процесса, сами колонки для хранения этих полей, а также их текущие значения, не удаляются.

Они остаются там же, где были. Они только перестают отображаться в интерфейсе, а также перестает работать часть завязанной на эти поля бизнес-логики.

Также следует учесть, что элемент смарт-процесса всегда привязан к направлению и стадии. Даже если этот функционал отключен, для смарт-процесса всегда есть хотя бы одно направление и хотя бы одна стадия.

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

Подробнее про системные поля можно посмотреть тут.

Полнотекстовый индекс

Для каждого процесса помимо таблицы элементов создается динамически таблица для хранения полнотекстовского индекса.

Класс \Bitrix\Crm\Model\Dynamic\PrototypeItemIndex.

Сами таблицы создаются тут \Bitrix\Crm\Model\Dynamic\TypeTable::onAfterAdd.

Стадии смарт-процессов


ENTITY_ID

Данные о стадиях хранятся в таблице b_crm_status

Поле ENTITY_ID формируется как

'DYNAMIC_' + {entityTypeId} + '_STAGE_' + {categoryId}

Через API значение этого поля можно получить в методе \Bitrix\Crm\Service\Factory::getStagesEntityId()

Например, для смарт-процесса с идентификатором 150 и направлением 3 поле будет

DYNAMIC_150_STAGE_3


STATUS_ID

Префикс для STATUS_ID формируется как

'DT' + {entityTypeId} + '_' + {categoryId} + ':'

Например, для финальной стадии по умолчанию для смарт-процесса с идентификатором 150 в направлении с идентификатором 3 поле будет

DT150_3:SUCCESS

Через API префикс для смарт-процесса можно получить в методе \CCrmStatus::getDynamicEntityStatusPrefix()

Дополнительно

Дополнительно



© «Битрикс», 2001-2024, «1С-Битрикс», 2024