PHP
#bitrix#main#config#php#cOption#settings

Работа с конфигом: чтение и запись опций

Чтение и запись настроек через COption или \Bitrix\Main\Config\Option с примерами использования в модулях и компонентах.

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

Работа с настройками модулей через API конфигурации Bitrix. Используйте для хранения пользовательских настроек модулей, компонентов, параметров интеграций.

use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;

/**
 * Чтение опции через D7 API
 * @param string $moduleId ID модуля (например, 'main', 'iblock', 'sale')
 * @param string $name Имя опции
 * @param string $default Значение по умолчанию
 * @return string Значение опции
 */
function getConfigOption($moduleId, $name, $default = '') {
    if (!Loader::includeModule('main')) {
        return $default;
    }
    
    return Option::get($moduleId, $name, $default);
}

/**
 * Запись опции через D7 API
 * @param string $moduleId ID модуля
 * @param string $name Имя опции
 * @param string $value Значение
 * @return bool Успешно ли записано
 */
function setConfigOption($moduleId, $name, $value) {
    if (!Loader::includeModule('main')) {
        return false;
    }
    
    Option::set($moduleId, $name, $value);
    return true;
}

/**
 * Чтение опции через классический API
 * @param string $moduleId ID модуля
 * @param string $name Имя опции
 * @param string $default Значение по умолчанию
 * @return string Значение опции
 */
function getConfigOptionClassic($moduleId, $name, $default = '') {
    return COption::GetOptionString($moduleId, $name, $default);
}

/**
 * Запись опции через классический API
 * @param string $moduleId ID модуля
 * @param string $name Имя опции
 * @param string $value Значение
 * @return void
 */
function setConfigOptionClassic($moduleId, $name, $value) {
    COption::SetOptionString($moduleId, $name, $value);
}

Usage:

// Чтение опции через D7
$apiKey = getConfigOption('custom_module', 'api_key', '');
$timeout = getConfigOption('custom_module', 'timeout', '30');

// Запись опции через D7
setConfigOption('custom_module', 'api_key', 'secret_key_123');
setConfigOption('custom_module', 'timeout', '60');

// Чтение опции через классический API
$siteName = getConfigOptionClassic('main', 'site_name');

// Запись опции через классический API
setConfigOptionClassic('custom_module', 'enabled', 'Y');

// Работа с массивом (сериализация)
$settings = ['key1' => 'value1', 'key2' => 'value2'];
setConfigOption('custom_module', 'settings', serialize($settings));
$loadedSettings = unserialize(getConfigOption('custom_module', 'settings', ''));

Notes:

⚠️ Опции хранятся в таблице b_option. D7 API (Option::get/set) предпочтительнее классического (COption). Для хранения массивов используйте serialize()/unserialize() или JSON. Опции модуля доступны глобально и кешируются системой. Модуль main должен быть подключен для D7 API.