...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_document.php
- Класс: \CCrmDocument
- Вызов: CCrmDocument::InternalizeEnumerationField
static function InternalizeEnumerationField($entityTypeID, array &$fields, $name) { if(!isset($fields[$name])) { return; } $entityResult = CUserTypeEntity::GetList(array(), array("ENTITY_ID" => $entityTypeID, "FIELD_NAME" => $name)); $entity = $entityResult->Fetch(); if(!is_array($entity)) { return; } $isMultiple = isset($entity['MULTIPLE']) && $entity['MULTIPLE'] === 'Y'; $enumXMap = array(); $enumVMap = array(); $enumResult = CUserTypeEnum::GetList($entity); while ($enum = $enumResult->GetNext()) { $enumXMap[$enum["XML_ID"]] = $enum["ID"]; $enumVMap[$enum["VALUE"]] = $enum["ID"]; } $results = array(); if(is_array($fields[$name])) { foreach($fields[$name] as $value) { if(CBPHelper::IsAssociativeArray($value)) { //HACK: For IBlockDocument $value = array_keys($value); if(!$isMultiple) { $value = array_shift($value); } } if(is_array($value)) { foreach($value as $v) { if(isset($enumXMap[$v])) { $results[] = $enumXMap[$v]; } elseif(isset($enumVMap[$v])) { $results[] = $enumVMap[$v]; } } } elseif(isset($enumXMap[$value])) { $results[] = $enumXMap[$value]; } elseif(isset($enumVMap[$value])) { $results[] = $enumVMap[$value]; } } } elseif(isset($enumXMap[$fields[$name]])) { $results[] = $enumXMap[$fields[$name]]; } elseif(isset($enumVMap[$fields[$name]])) { $results[] = $enumVMap[$fields[$name]]; } $results = array_unique($results); if(!empty($results)) { $fields[$name] = $isMultiple ? $results : $results[0]; } else { //Set "empty" value $fields[$name] = $isMultiple ? [] : null; } }