• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_component_helper.php
  • Класс: \CCrmComponentHelper
  • Вызов: CCrmComponentHelper::getRequisiteAddressFieldData
static function getRequisiteAddressFieldData(int $entityTypeId, int $categoryId = 0): array
{
	$featureRestriction = RestrictionManager::getAddressSearchRestriction();
	$addressTypeInfos = [];
	foreach (EntityAddressType::getAllDescriptions() as $id => $desc)
	{
		$addressTypeInfos[$id] = [
			'ID' => $id,
			'DESCRIPTION' => $desc
		];
	}
	$countryAddressTypeMap = [];
	foreach (EntityRequisite::getCountryAddressZoneMap() as $countryId => $addressZoneId)
	{
		$countryAddressTypeMap[$countryId] = EntityAddressType::getIdsByZonesOrValues([$addressZoneId]);
	}
	$addressZoneId = EntityAddress::getZoneId();

	$result = [
		'multiple' => true,
		'types' => $addressTypeInfos,
		'autocompleteEnabled' => $featureRestriction->hasPermission(),
		'featureRestrictionCallback' => $featureRestriction->prepareInfoHelperScript(),
		'addressZoneConfig' => [
			'defaultAddressType' => EntityAddressType::getDefaultIdByZone($addressZoneId),
			'currentZoneAddressTypes' => EntityAddressType::getIdsByZonesOrValues([$addressZoneId]),
			'countryAddressTypeMap' => $countryAddressTypeMap,
		],
	];

	if (CCrmOwnerType::IsDefined($entityTypeId) && $categoryId > 0)
	{
		$factory = Container::getInstance()->getFactory($entityTypeId);
		if ($factory && $factory->isCategoryAvailable($categoryId))
		{
			$category = $factory->getCategory($categoryId);
			if ($category instanceof ItemCategory)
			{
				$result['defaultAddressTypeByCategory'] = $category->getDefaultAddressType();
			}
		}
	}

	return $result;
}