- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatemanager.php
- Класс: Bitrix\Crm\Integrity\DuplicateManager
- Вызов: DuplicateManager::getDedupeTypeScopeMap
static function getDedupeTypeScopeMap($entityTypeID) { $result = []; $rqFieldScopeMap = $bdFieldScopeMap = null; foreach (self::getSupportedDedupeTypes($entityTypeID) as $typeID) { $scopes = ['']; $isRequisite = (($typeID & DuplicateIndexType::REQUISITE) === $typeID); $isBankDetail = (($typeID & DuplicateIndexType::BANK_DETAIL) === $typeID); if($isRequisite || $isBankDetail) { if ($isRequisite) $fieldScopeMap = &$rqFieldScopeMap; else $fieldScopeMap = &$bdFieldScopeMap; if ($fieldScopeMap === null) { $fieldScopeMap = []; if ($isRequisite) $fieldsMap = DuplicateRequisiteCriterion::getIndexedFieldsMap($entityTypeID, true); else $fieldsMap = DuplicateBankDetailCriterion::getIndexedFieldsMap($entityTypeID, true); foreach ($fieldsMap as $scope => $fields) { foreach ($fields as $fieldName) { $fieldScopeMap[DuplicateIndexType::resolveID($fieldName)][$scope] = true; } } } $scopes = isset($fieldScopeMap[$typeID]) ? array_keys($fieldScopeMap[$typeID]) : []; unset($fieldScopeMap); } else { $isVolatile = false; $volatileTypeId = DuplicateIndexType::UNDEFINED; foreach (DuplicateVolatileCriterion::getSupportedDedupeTypes() as $currentTypeId) { if ((($typeID & $currentTypeId) === $currentTypeId)) { $volatileTypeId = $currentTypeId; $isVolatile = true; break; } } if ($isVolatile) { $typeInfo = Volatile\TypeInfo::getInstance(); $info = $typeInfo->getById($volatileTypeId); if ( !empty($info) && isset($info['CATEGORY_INFO']['categoryId']) && isset($info['CATEGORY_INFO']['params']['countryId']) ) { $categoryId = $info['CATEGORY_INFO']['categoryId']; $countryId = $info['CATEGORY_INFO']['params']['countryId']; switch ($categoryId) { case Volatile\FieldCategory::REQUISITE: $scopes = [EntityRequisite::formatDuplicateCriterionScope($countryId)]; break; case Volatile\FieldCategory::BANK_DETAIL: $scopes = [EntityBankDetail::formatDuplicateCriterionScope($countryId)]; break; } } } } if (!empty($scopes)) { $result[$typeID] = $scopes; } } return $result; }