• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/crm.php
  • Класс: BitrixIntranetIntegrationCrm
  • Вызов: Crm::getFirstAvailableEntityTypeId
private function getFirstAvailableEntityTypeId(): ?int
{
	$container = Container::getInstance();

	$userPermissions = $container->getUserPermissions();
	if (BitrixCrmSettingsLeadSettings::isEnabled() && $userPermissions->canReadType(CCrmOwnerType::Lead))
	{
		return CCrmOwnerType::Lead;
	}

	$availableEntityTypeIds = [
		CCrmOwnerType::Deal,
		CCrmOwnerType::Contact,
		CCrmOwnerType::Company,
		CCrmOwnerType::Quote,
	];
	foreach ($availableEntityTypeIds as $availableEntityTypeId)
	{
		if ($userPermissions->canReadType($availableEntityTypeId))
		{
			return $availableEntityTypeId;
		}
	}

	$dynamicTypesMap = $container->getDynamicTypesMap();
	$dynamicTypesMap->load([
		'isLoadStages' => false,
		'isLoadCategories' => false,
	]);
	foreach ($dynamicTypesMap->getTypes() as $type)
	{
		if ($userPermissions->canReadType($type->getEntityTypeId()))
		{
			return $type->getEntityTypeId();
		}
	}

	return null;
}