• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/entityfieldprovider.php
  • Класс: Bitrix\Crm\WebForm\EntityFieldProvider
  • Вызов: EntityFieldProvider::getFieldsTree
static function getFieldsTree(array $hiddenTypes = [], ?int $presetId = null)
{
	$fields = array();

	//TODO: do refactoring
	$fields['CATALOG'] = array(
		'CAPTION' => 'Other',
		'FIELDS' => array(
			array(
				'type' => 'list',
				'entity_field_name' => 'PRODUCT',
				'entity_name' => '',
				'name' => 'PRODUCT',
				'caption' => Loc::getMessage('CRM_WEBFORM_FIELD_PROVIDER_PRODUCT'),
				'multiple' => true,
				'required' => true,
			)
		)
	);

	$fields[\CCrmOwnerType::ActivityName] = array(
		'CAPTION' => \CCrmOwnerType::GetDescription(\CCrmOwnerType::Activity),
		'FIELDS' => array(
			array(
				'type' => 'string',
				'entity_field_name' => 'SUBJECT',
				'entity_name' => \CCrmOwnerType::ActivityName,
				'name' => \CCrmOwnerType::ActivityName . '_SUBJECT',
				'caption' => Loc::getMessage('CRM_WEBFORM_FIELD_PROVIDER_ACTIVITY_SUBJECT'),
				'multiple' => false,
				'required' => false,
			),
			array(
				'type' => 'checkbox',
				'entity_field_name' => 'COMPLETED',
				'entity_name' => \CCrmOwnerType::ActivityName,
				'name' => \CCrmOwnerType::ActivityName . '_COMPLETED',
				'caption' => Loc::getMessage('CRM_WEBFORM_FIELD_PROVIDER_ACTIVITY_COMPLETED'),
				'multiple' => false,
				'required' => false,
				'items' => array(
					array('ID' => 'N', 'VALUE' => Loc::getMessage('CRM_WEBFORM_FIELD_PROVIDER_NO')),
					array('ID' => 'Y', 'VALUE' => Loc::getMessage('CRM_WEBFORM_FIELD_PROVIDER_YES'))
				)
			)
		)
	);

	$hideVirtual = in_array(self::TYPE_VIRTUAL, $hiddenTypes);
	$hideRequisites = in_array(\CCrmOwnerType::Requisite, $hiddenTypes);
	$map = Entity::getMap();
	foreach($map as $entityName => $entity)
	{
		$entityTypeId = \CCrmOwnerType::ResolveID($entityName);
		if (!empty($entity['HIDDEN']) && !in_array($entityTypeId, $hiddenTypes))
		{
			continue;
		}

		$fields[$entityName] = array(
			'CAPTION' => \CCrmOwnerType::GetDescription($entityTypeId),
			'FIELDS' => self::getFieldsInternal(
				$entityName,
				$entity,
				[
					'hideVirtual' => $hideVirtual,
					'hideRequisites' => $hideRequisites,
					'presetId' => $presetId,
				]
			)
		);
	}

	return $fields;
}