• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/component/entitydetails/basecomponent.php
  • Класс: Bitrix\Crm\Component\EntityDetails\BaseComponent
  • Вызов: BaseComponent::prepareMultifieldsForSave
static function prepareMultifieldsForSave($entityTypeID, $entityID, array $multifieldData)
{
	$multifields = [];
	if ($entityID > 0)
	{
		$multifields = static::getMultifields($entityTypeID, $entityID);
	}

	$counter = 0;
	foreach ($multifieldData as $item)
	{
		$ID = isset($item['ID']) ? (int)$item['ID'] : 0;
		$typeID = $item['TYPE_ID'] ?? '';
		$value = $item['VALUE'] ?? '';
		if ($typeID === '')
		{
			continue;
		}

		if ($ID <= 0 && $value === '')
		{
			continue;
		}

		if ($typeID === 'EMAIL' && !check_email($value))
		{
			if ($ID <= 0)
			{
				continue;
			}

			$value = '';
		}

		$valueCountryCode = $typeID === 'PHONE' ? $item['VALUE_COUNTRY_CODE'] : '';

		if (!isset($multifields[$typeID]))
		{
			$multifields[$typeID] = [];
		}

		if ($ID > 0)
		{
			$valueType = isset($multifields[$typeID][$ID]) && $multifields[$typeID][$ID]['VALUE_TYPE']
				? $multifields[$typeID][$ID]['VALUE_TYPE']
				: 'WORK';

			$multifields[$typeID][$ID] = [
				'VALUE' => $value,
				'VALUE_TYPE' => $valueType,
				'VALUE_COUNTRY_CODE' => $valueCountryCode,
			];
		}
		else
		{
			$multifields[$typeID]["n{$counter}"] = [
				'VALUE' => $value,
				'VALUE_TYPE' => 'WORK',
				'VALUE_COUNTRY_CODE' => $valueCountryCode,
			];

			$counter++;
		}
	}

	return $multifields;
}