• Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/form/entityeditorconfiguration.php
  • Класс: BitrixUIFormEntityEditorConfiguration
  • Вызов: EntityEditorConfiguration::set
public function set($configID, array $config, array $params)
{
	$categoryName = $this->getCategoryName();

	$scope = isset($params['scope'])? mb_strtoupper($params['scope']) : EntityEditorConfigScope::UNDEFINED;
	if(!EntityEditorConfigScope::isDefined($scope))
	{
		$scope = EntityEditorConfigScope::PERSONAL;
	}

	$userScopeId = $params['userScopeId'] ?? 0;

	$forAllUsers = self::canEditOtherSettings()
		&& isset($params['forAllUsers'])
		&& $params['forAllUsers'] === 'Y';

	if($forAllUsers)
	{
		if(isset($params['delete']) && $params['delete'] === 'Y')
		{
			CUserOptions::DeleteOptionsByName($categoryName, $configID);
		}
		CUserOptions::SetOption($categoryName, $configID, $config, true);
	}

	if($scope === EntityEditorConfigScope::COMMON)
	{
		CUserOptions::SetOption(
			$categoryName,
			$this->prepareName($configID, $scope),
			$config,
			true
		);
	}
	elseif($scope === EntityEditorConfigScope::PERSONAL)
	{
		CUserOptions::SetOption($categoryName, $configID, $config);
	}
	elseif($userScopeId > 0)
	{
		Scope::getInstance()->updateScopeConfig(
			$userScopeId,
			$config
		);
	}

	$options = isset($params['options']) && is_array($params['options']) ? $params['options'] : array();
	if(!empty($options))
	{
		$optionName = static::prepareOptionsName($configID, $scope, $userScopeId);
		if($scope === EntityEditorConfigScope::COMMON)
		{
			CUserOptions::SetOption(
				$categoryName,
				$optionName,
				$options,
				true
			);
		}
		else
		{
			if($forAllUsers)
			{
				if(isset($params['delete']) && $params['delete'] === 'Y')
				{
					CUserOptions::DeleteOptionsByName($categoryName, $optionName);
				}
				CUserOptions::SetOption($categoryName, $optionName, $options, true);
			}
			CUserOptions::SetOption($categoryName, $optionName, $options);
		}
		//todo check what to do with options for custom scopes
	}
}