• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/controller/userfieldconfig.php
  • Класс: BitrixMainControllerUserFieldConfig
  • Вызов: UserFieldConfig::addAction
public function addAction(string $moduleId, array $field, CRestServer $restServer = null): ?array
{
	$access = $this->getAccess($moduleId, $restServer);
	if (!$access)
	{
		return null;
	}
	$field = $this->prepareFields($field);
	if (!$access->canAdd($field))
	{
		$this->addError($this->getAddAccessDeniedError());
		return null;
	}

	$fieldName = $field['FIELD_NAME'] ?? '';
	$entityId = $field['ENTITY_ID'] ?? '';
	$prefix = 'UF_' . $entityId . '_';
	if (strpos($fieldName, $prefix) !== 0)
	{
		$this->addError(new Error(Loc::getMessage('MAIN_USER_FIELD_CONTROLLER_FIELD_NAME_ERROR')));
		return null;
	}

	$userTypeEntity = new CUserTypeEntity();
	$id = $userTypeEntity->Add($field);
	if ($id > 0)
	{
		if ($field['USER_TYPE_ID'] === 'enumeration')
		{
			$this->updateEnums($id, (array)$field['ENUM']);
		}

		return [
			'field' => $this->preparePublicData(UserFieldTable::getFieldData($id)),
		];
	}

	$this->fillErrorsFromApplication();
	if (!$this->getErrors())
	{
		$this->addError($this->getCommonError());
	}

	return null;
}