• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/requisite.php
  • Класс: Bitrix\Crm\WebForm\Requisite
  • Вызов: Requisite::getPresets
public function getPresets(): array
{
	$list = [];
	foreach (array_keys(EntityPreset::getActiveItemList()) as $id)
	{
		$preset = EntityPreset::getSingleInstance()->getById($id);
		if (!$preset)
		{
			continue;
		}

		$countryId = (int)$preset['COUNTRY_ID'];
		$presetSettings = is_array($preset['SETTINGS'] ?? 0) ? $preset['SETTINGS'] : [];
		$fieldNames = EntityPreset::getSingleInstance()->settingsGetFields($presetSettings);
		$fieldNames = array_column($fieldNames, 'FIELD_NAME');
		$hasAddress = in_array(EntityRequisite::ADDRESS, $fieldNames);

		$fields = $this->getReqFields(
			$countryId,
			array_diff(
				$fieldNames,
				[EntityRequisite::ADDRESS]
			)
		);
		if ($hasAddress)
		{
			$fields = array_merge($fields, $this->getAddressTypes($countryId));
		}

		if ($this->splitAccountFields)
		{
			foreach ($this->getBankingFields($countryId) as $accountField)
			{
				//$accountField['name'] = 'RQ_ACC_' . $accountField['name'];
				$fields[] = $accountField;
			}
		}
		else
		{
			$fields[] = [
				'name' => 'RQ_ACC',
				'type' => 'account',
				'label' => 'Banking account',
				'fields' => $this->getBankingFields($countryId),
			];
		}

		$validationMap = EntityRequisite::getSingleInstance()->getRqFieldValidationMap();
		$fields = array_map(
			function (array $field) use ($validationMap)
			{
				$name = $field['name'];
				$validators = $validationMap[$name] ?? [];
				if (Main\Type\Collection::isAssociative($validators))
				{
					$validators = [$validators];
				}

				foreach ($validators as $validator)
				{
					if ($validator['type'] !== 'length')
					{
						continue;
					}

					$field['size'] = [
						'min' => (int)($validator['params']['min'] ?? 0),
						'max' => (int)($validator['params']['max'] ?? 0),
					];
					break;
				}

				return $field;
			},
			$fields
		);

		$list[] = [
			'id' => (int)$preset['ID'],
			'label' => $preset['NAME'],
			'countryId' => $countryId,
			'fields' => $fields,
		];
	}

	return $list;
}