• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/importhelper.php
  • Класс: Bitrix\Crm\Requisite\ImportHelper
  • Вызов: ImportHelper::parseAddressFields
protected function parseAddressFields($row, $presetInfo)
{
	$result = new Main\Result();

	$addressFields = array();

	$countryId = $presetInfo['COUNTRY_ID'];

	$headerIds = array();
	if (is_array($this->headerGroupCountryIdMap['address'][$countryId]))
		$headerIds = array_keys($this->headerGroupCountryIdMap['address'][$countryId]);
	foreach ($headerIds as $headerId)
	{
		$fieldName = '';
		if (is_array($this->headerById[$headerId])
			&& isset($this->headerById[$headerId]['field'])
			&& isset($this->headerById[$headerId]['countryId'])
			&& $this->headerById[$headerId]['fieldType'])
		{
			$fieldName = $this->headerById[$headerId]['field'];
		}
		if (!is_string($fieldName) || $fieldName == '')
		{
			continue;
		}

		if (isset($row[$this->headerIndex[$headerId]]))
		{
			$value = $row[$this->headerIndex[$headerId]];

			if ($fieldName === 'TYPE')
			{
				$isIncorrectAddressType = false;
				$addressTypeList = $this->getAddressTypeList();
				if (is_numeric($value))
				{
					$value = (int)$value;
					if (isset($addressTypeList[$value]))
						$addressFields['TYPE_ID'] = $value;
					else
						$isIncorrectAddressType = true;
				}
				else
				{
					$value = array_search($value, $addressTypeList, true);
					if ($value !== false)
						$addressFields['TYPE_ID'] = $value;
					else
						$isIncorrectAddressType = true;
				}
				if ($isIncorrectAddressType)
				{
					$result->addError(
						new Main\Error(
							Loc::getMessage('CRM_RQ_IMP_HLPR_ERR_UNKNOWN_ADDRESS_TYPE'),
							self::ERR_UNKNOWN_ADDRESS_TYPE
						)
					);
				}
			}
			else
			{
				$addressFields[$fieldName] = $value;
			}
		}
	}

	$result->setData($addressFields);

	return $result;
}