Смарт-процессы
Одна из основных функций CRM - отслеживание, хранение и удобное отображение коммуникаций. При этом не всегда коммуникации - это продажи. Это могут быть какие-то внутренние процессы, обработка обращений в техподдержку, закупки и т.д. В этом случае есть потребность хранить и обрабатывать информацию и коммуникации не внутри лидов/сделок, а отдельно. Кроме того, часто в CRM хочется хранить много связанной информации, которая относится к продажам, но не является лидом/сделкой. Чтобы закрыть эту потребность в CRM с версии 20.700.0 появились смарт-процессы.
Что такое смарт-процесс
Каждый смарт-процесс - это новая сущность в рамках CRM, для которой создается новый раздел со своим интерфейсом, набором функционала, полями, элементами и т.д.
По-другому смарт-процесс можно назвать "Кастомная сущность CRM", "Универсальная сущность CRM" или "Динамический тип сущности CRM".
Смарт-процессы встроены в новое API CRM.
Данные
Концептуально смарт-процессы похожи на инфоблоки (универсальные списки). Каждый смарт-процесс - это тип инфоблока.
Ещё больше с точки зрения данных смарт-процессы похожи на rpa
.
Механизм хранения значений пользовательских полей такой же, как в rpa
и highloadblock
.
- Таблица смарт-процессов и EntityObject для них;
- Таблица направлений смарт-процессов
- Правила формирования идентификаторов для таблицы статусов (см. таб Стадии смарт-процессов);
- Абстрактный таблет элементов смарт-процессов и EntityObject для них;
- Абстрактный таблет полнотекстового поиска по элементам смарт-процессов;
- Таблица связей с контактами.
Примечание: В структуру таблиц заложена возможность указания множественных ответственных для элементов смарт-процессов. Но на данный момент этот функционал ещё не готов до конца.
Особенности хранения данных элементов
Для каждого смарт-процесса имеется свой набор элементов. В этом плане иерархия аналогична инфоблокам, где процесс - это тип инфоблока, а элементы - это элементы инфоблока. Только вместо свойств инфоблока используются пользовательские поля из ядра.
Большая часть кода, отвечающего за хранение элементов и значений пользовательских свойств сосредоточена в папке 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()
Дополнительно
Дополнительно
- Сообщение в блоге разработчика: Смарт-процессы и новое API CRM
- Посмотреть доклад ведущего разработчика по смарт-процессам можно в Youtub'е.