• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entityaddress.php
  • Класс: Bitrix\Crm\EntityAddress
  • Вызов: EntityAddress::updateLocationAddressFields
static function updateLocationAddressFields(Address $locationAddress, array $fields): bool
{
	$addressFieldMap = static::getAddressFieldMap();

	$maxLocAddrFieldLength = 1024;    // b_location_addr_fld( ... `VALUE` VARCHAR(1024) NULL
	$result = false;
	foreach ($addressFieldMap as $crmAddressFieldName => $locationAddressFieldId)
	{
		if (isset($fields[$crmAddressFieldName]) && is_string($fields[$crmAddressFieldName]))
		{
			$value =
				mb_strlen($fields[$crmAddressFieldName]) > $maxLocAddrFieldLength
				? mb_substr($fields[$crmAddressFieldName], 0, $maxLocAddrFieldLength)
				: $fields[$crmAddressFieldName]
			;
			$locationFieldValue = $locationAddress->getFieldValue($locationAddressFieldId);
			if ($value !== '' || ($locationFieldValue !== null && $value !== $locationFieldValue))
			{
				$locationAddress->setFieldValue($locationAddressFieldId, $value);
				$result = true;
			}
		}
	}
	return $result;
}