- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_contact.php
- Класс: \CAllCrmContact
- Вызов: CAllCrmContact::CreateRequisite
static function CreateRequisite($ID, $presetID) { if(!is_integer($ID)) { $ID = (int)$ID; } if($ID <= 0) { throw new Main\ArgumentException('Must be greater than zero', 'ID'); } if(!is_integer($presetID)) { $presetID = (int)$presetID; } if($presetID <= 0) { throw new Main\ArgumentException('Must be greater than zero', 'presetID'); } $externalID = "CONTACT_{$ID}"; if(Crm\EntityRequisite::getByExternalId($externalID, array('ID')) !== null) { //Already exists return false; } $dbResult = self::GetListEx( array(), array('=ID' => $ID, 'CHECK_PERMISSIONS' => 'N') ); $entityFields = $dbResult->Fetch(); if(!is_array($entityFields)) { throw new Main\ObjectNotFoundException("The contact with ID '{$ID}' is not found"); } $presetEntity = new Crm\EntityPreset(); $presetFields = $presetEntity->getById($presetID); if(!is_array($presetFields)) { throw new Main\ObjectNotFoundException("The preset with ID '{$presetID}' is not found"); } $fieldInfos = $presetEntity->settingsGetFields( is_array($presetFields['SETTINGS']) ? $presetFields['SETTINGS'] : array() ); $fullName = self::GetFullName($entityFields); $requisiteFields = array(); foreach($fieldInfos as $fieldInfo) { $fieldName = isset($fieldInfo['FIELD_NAME']) ? $fieldInfo['FIELD_NAME'] : ''; if($fieldName === Crm\EntityRequisite::PERSON_FIRST_NAME) { if(isset($entityFields['NAME']) && $entityFields['NAME'] !== '') { $requisiteFields[Crm\EntityRequisite::PERSON_FIRST_NAME] = $entityFields['NAME']; } } elseif($fieldName === Crm\EntityRequisite::PERSON_SECOND_NAME) { if(isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '') { $requisiteFields[Crm\EntityRequisite::PERSON_SECOND_NAME] = $entityFields['SECOND_NAME']; } } elseif($fieldName === Crm\EntityRequisite::PERSON_LAST_NAME) { if(isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '') { $requisiteFields[Crm\EntityRequisite::PERSON_LAST_NAME] = $entityFields['LAST_NAME']; } } elseif($fieldName === Crm\EntityRequisite::PERSON_FULL_NAME) { if($fullName !== '') { $requisiteFields[Crm\EntityRequisite::PERSON_FULL_NAME] = $fullName; } } elseif($fieldName === Crm\EntityRequisite::ADDRESS) { $requisiteFields[Crm\EntityRequisite::ADDRESS] = array( EntityAddressType::Primary => ContactAddress::mapEntityFields( $entityFields, array('TYPE_ID' => EntityAddressType::Primary, 'SKIP_EMPTY' => true) ) ); } } if(empty($requisiteFields)) { return false; } $requisiteFields['NAME'] = $fullName !== '' ? $fullName : $externalID; $requisiteFields['PRESET_ID'] = $presetID; $requisiteFields['ACTIVE'] = 'Y'; $requisiteFields['ENTITY_TYPE_ID'] = CCrmOwnerType::Contact; $requisiteFields['ENTITY_ID'] = $ID; $requisiteFields['XML_ID'] = $externalID; $requisiteEntity = new Crm\EntityRequisite(); return $requisiteEntity->add($requisiteFields)->isSuccess(); }