Показ смарт-процессов вне CRM
В обновлении crm 21.25.1 в настройках смарт-процесса появился пункт "Показ вне CRM", который позволяет вынести данный процесс в новый раздел в левом меню. В случае включения этой настройки, смарт-процесс пропадет из основного раздела "CRM" и будет доступен через отдельный пункт в левом меню.
Данный функционал использует механизм настраиваемых разделов модуля Intranet.
Общий подход
Роутинг смарт-процессов осуществляется через \Bitrix\Crm\Service\Router
.
Именно он генерирует ссылки на грид, канбан и карточки элементов, которые потом подставляются в верстку.
И через него решается, какой компонент с какими параметрами необходимо подключить.
При выделении смарт-процесса в отдельный раздел, роутер начинает генерировать ссылки для него с учетом
нового адреса. Во всех ссылках на этот смарт-процесс стандартный корень /crm/
заменяется на тот,
который генерируется Интранетом
(см. \Bitrix\Crm\Integration\IntranetManager::getUrlForCustomSectionPage
).
Аналогично с js-роутером BX.Crm.Router
.
Если смарт-процесс выделен в отдельный раздел, то он не показывается в основном разделе CRM. Т.е. он исчезает из верхнего меню CRM, все ссылки на этот процесс открываются в отдельном разделе.
Детали реализации
Интеграция с настраиваемыми разделами Интранета обеспечивается через
\Bitrix\Crm\Integration\Intranet\CustomSectionProvider
.
На странице настраиваемого раздела подключается компонент crm.router
, которому в параметрах
передается текущий корень. Дальше жизненный цикл не отличается от обычной страницы CRM в новом API
Если текущий открытый смарт-процесс выделен в отдельный раздел, то не подключается верхняя панель
CRM (\Bitrix\Crm\Component\Base::addTopPanel
).