• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/Site/Sections/AutomationSection.php
  • Класс: BitrixIntranetSiteSectionsAutomationSection
  • Вызов: AutomationSection::getSmartProcesses
static function getSmartProcesses(): array
{
	$available = Loader::includeModule('crm');

	$defaultItems = [];
	$internalDynamicTypes = [];
	$externalDynamicTypes = [];
	if ($available)
	{
		$router = Container::getInstance()->getRouter();
		$defaultItems[] = [
			'TEXT' => Loc::getMessage('AUTOMATION_SECTION_CRM_DYNAMIC_DEFAULT_SUBTITLE'),
			'URL' => $router->getTypeListUrl(),
		];

		$types = Container::getInstance()->getDynamicTypesMap();
		$types->load([
			'isLoadStages' => false,
			'isLoadCategories' => false,
		]);

		$currentUser = CurrentUser::get();
		$userPermissions = Container::getInstance()->getUserPermissions($currentUser->getId());
		foreach ($types->getTypes() as $type)
		{
			if (!$userPermissions->canReadType($type->getEntityTypeId()))
			{
				continue;
			}

			$menuItem = [
				'TEXT' => $type->getTitle(),
				'URL' => $router->getItemListUrlInCurrentView($type->getEntityTypeId()),
			];

			if (CrmIntegrationIntranetManager::isEntityTypeInCustomSection($type->getEntityTypeId()))
			{
				$externalDynamicTypes[] = $menuItem;
			}
			else
			{
				$internalDynamicTypes[] = $menuItem;
			}
		}
	}

	return [
		'id' => 'crm-dynamic',
		'title' => Loc::getMessage('AUTOMATION_SECTION_CRM_DYNAMIC_ITEM_TITLE'),
		'available' => $available,
		'iconClass' => 'ui-icon intranet-automation-bp-icon',
		'menuData' => [
			'menu_item_id' => 'menu_crm_dynamic',
			'top_menu_id' => 'top_menu_id_crm_dynamic',
			'sub_menu' => [
				[
					'TEXT' => Loc::getMessage('AUTOMATION_SECTION_CRM_DYNAMIC_SUBTITLE_1'),
					'URL' => '/crm/',
					'ITEMS' => array_merge($externalDynamicTypes, $defaultItems),
				],
				[
					'TEXT' => Loc::getMessage('AUTOMATION_SECTION_CRM_DYNAMIC_CRM_SUBTITLE'),
					'URL' => '/crm/',
					'ITEMS' => array_merge($internalDynamicTypes, $defaultItems),
				]
			],
		],
	];
}