• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/resultentity.php
  • Класс: Bitrix\Crm\WebForm\ResultEntity
  • Вызов: ResultEntity::fillFieldsByPresetFields
protected function fillFieldsByPresetFields($entityName, $entityFields)
{
	if(!$this->presetFields)
	{
		return $entityFields;
	}

	$fields = [];
	foreach ($this->fields as $fieldEntityName => $fieldValues)
	{
		foreach ($fieldValues as $fieldName => $fieldValue)
		{
			if ($fieldName === 'FM' && is_array($fieldValue))
			{
				foreach ($fieldValue as $fieldMultiKey => $fieldMultiValue)
				{
					$fieldMultiValue = $fieldMultiValue['n0']['VALUE'] ?? '';
					$key = "{$fieldEntityName}_{$fieldMultiKey}";
					$key = mb_strtolower($key);
					$fields[$key] = $fieldMultiValue;
				}
			}
			elseif (!is_array($fieldValue))
			{
				$key = "{$fieldEntityName}_{$fieldName}";
				$key = mb_strtolower($key);
				$fields[$key] = $fieldValue;
			}
		}
	}

	$placeholders = $this->placeholders;
	$placeholders['crm_form_id'] = $this->formId;
	$placeholders['crm_form_name'] = $this->formData['NAME'];
	$placeholders['crm_result_id'] = $this->resultId;
	$placeholders += $fields;

	foreach($this->presetFields as $presetField)
	{
		if($presetField['ENTITY_NAME'] != $entityName)
		{
			continue;
		}

		$value = $presetField['VALUE'];
		$fromList = $toList = array();
		foreach ($placeholders as $key => $val)
		{
			$fromList[] = '%' . $key . '%';
			$toList[] = $val;
		}
		$value = str_replace($fromList,	$toList, $value);
		$value = preg_replace("/%([a-z0-9_]+?)%/i", '', $value);
		$entityFields[$presetField['FIELD_NAME']] = $value;
	}

	return $entityFields;
}