• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/config/option.php
  • Класс: BitrixMainConfigOption
  • Вызов: Option::set
static function set($moduleId, $name, $value = "", $siteId = "")
{
	if ($moduleId == '')
	{
		throw new MainArgumentNullException("moduleId");
	}
	if ($name == '')
	{
		throw new MainArgumentNullException("name");
	}

	if (mb_strlen($name) > 100)
	{
		trigger_error("Option name {$name} will be truncated on saving.", E_USER_WARNING);
	}

	if ($siteId === false)
	{
		$siteId = static::getDefaultSite();
	}

	$con = MainApplication::getConnection();
	$sqlHelper = $con->getSqlHelper();

	$updateFields = [
		"VALUE" => $value,
	];

	if($siteId == "")
	{
		$insertFields = [
			"MODULE_ID" => $moduleId,
			"NAME" => $name,
			"VALUE" => $value,
		];

		$keyFields = ["MODULE_ID", "NAME"];

		$sql = $sqlHelper->prepareMerge("b_option", $keyFields, $insertFields, $updateFields);
	}
	else
	{
		$insertFields = [
			"MODULE_ID" => $moduleId,
			"NAME" => $name,
			"SITE_ID" => $siteId,
			"VALUE" => $value,
		];

		$keyFields = ["MODULE_ID", "NAME", "SITE_ID"];

		$sql = $sqlHelper->prepareMerge("b_option_site", $keyFields, $insertFields, $updateFields);
	}

	$con->queryExecute(current($sql));

	static::clearCache($moduleId);

	static::loadTriggers($moduleId);

	$event = new MainEvent(
		"main",
		"OnAfterSetOption_".$name,
		array("value" => $value)
	);
	$event->send();

	$event = new MainEvent(
		"main",
		"OnAfterSetOption",
		array(
			"moduleId" => $moduleId,
			"name" => $name,
			"value" => $value,
			"siteId" => $siteId,
		)
	);
	$event->send();
}