• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/form.php
  • Класс: Bitrix\Crm\WebForm\Form
  • Вызов: Form::getFieldsMap
public function getFieldsMap()
{
	$fields = $this->getFieldsDescription();
	$dependencyList = $this->getDependencies();
	$currencyId = $this->getCurrencyId();

	$fieldList = array();
	foreach($fields as $field)
	{
		$preparedField = [
			'id' => $field['ID'],
			'type' => $field['TYPE'],
			'name' => $field['CODE'],
		];
		if($field['TYPE'] == 'section')
		{
			$preparedField += array(
				'caption' => $field['CAPTION'],
			);
		}
		else
		{
			$preparedField += array(
				'type_original' => $field['TYPE_ORIGINAL'],
				'entity_name' => $field['ENTITY_NAME'],
				'entity_field_name' => $field['ENTITY_FIELD_NAME'],
				'caption' => $field['CAPTION'] ? $field['CAPTION'] : $field['ENTITY_FIELD_CAPTION'],
				'required' => $field['REQUIRED'] == 'Y' ? true : false,
				'autocomplete' => $field['SETTINGS_DATA']['AUTOCOMPLETE'] == 'Y' ? true : false,
				'multiple' => $field['MULTIPLE'] == 'Y' ? true : false,
				'multiple_original' => $field['MULTIPLE_ORIGINAL'],
				'hidden' => false,
				'placeholder' => $field['PLACEHOLDER'],
				'value' => $field['VALUE'],
				'value_type' => $field['VALUE_TYPE'],
				'settings_data' => $field['SETTINGS_DATA']
			);

			if(isset($field['ITEMS']) && is_array($field['ITEMS']))
			{
				$preparedField['items'] = array();
				foreach($field['ITEMS'] as $item)
				{
					$price = isset($item['PRICE']) ? $item['PRICE'] : null;
					if ($price !== null && !is_numeric($price))
					{
						$price = 0;
					}
					$discount = isset($item['DISCOUNT']) ? $item['DISCOUNT'] : null;
					if ($discount !== null && !is_numeric($discount))
					{
						$discount = 0;
					}

					if (empty($item['ID']))
					{
						continue;
					}

					$preparedItem = array(
						'title' => $item['VALUE'],
						'value' => $item['ID'],
					);
					if ($price !== null)
					{
						$preparedItem['price'] = $price;
						$preparedItem['changeablePrice'] = isset($item['CUSTOM_PRICE'])
							&& $item['CUSTOM_PRICE'] === 'Y'
							&& Manager::isOrdersAvailable();
						$preparedItem['discount'] = $discount ?: 0;
						$preparedItem['price_formatted'] = \CCrmCurrency::MoneyToString($price, $currencyId);
					}
					$preparedField['items'][] = $preparedItem;
				}
			}
		}

		if(isset($dependencyList[$field['CODE']]))
		{
			$preparedField['dependences'] = $dependencyList[$field['CODE']];
			$preparedField['hidden'] = true;
		}

		$fieldList[] = $preparedField;
	}

	return $fieldList;
}