Блог Горошко Андрея 1C-Битрикс Настройки модулей: COption и современный \Bitrix\Main\Config\Option

Настройки модулей: COption и современный \Bitrix\Main\Config\Option

Настройки модулей (те, что задаются в административной панели) хранятся в базе данных в таблице b_option.

Для программного доступа к этим настройкам в Битрикс есть два API: старый (COption) и новый, на D7 (Option).

Когда это нужно?

  • Когда ваш кастомный код должен использовать параметры, заданные в админке (например, API-ключ, ID инфоблока, флаг «включить/выключить фичу»).
  • При установке модуля, чтобы записать значения по умолчанию.
  • Для создания кастомных страниц настроек.

1. Классический подход: COption

Класс COption имеет два основных метода для чтения, разделенных по «типу», хотя по факту оба возвращают строку.

Чтение настройки: GetOptionString / GetOptionInt

  • COption::GetOptionString($moduleId, $name, $defaultValue = «»)
  • $moduleId: ID модуля (например, «main», «iblock», «my.module»).
  • $name: Символьный код опции.
  • $defaultValue: Значение, которое вернется, если опция не найдена.

// Получаем E-mail администратора из настроек главного модуля
$adminEmail = COption::GetOptionString("main", "email_from", "default@example.com");

// Получаем ID инфоблока новостей из настроек нашего модуля
$newsIblockId = COption::GetOptionInt("my.module", "news_iblock_id");
// GetOptionInt — это просто обертка над GetOptionString с приведением результата к (int).

// Запись настройки: `SetOptionString` / `SetOptionInt`
COption::SetOptionString($moduleId, $name, $value = "");

// Устанавливаем настройку для нашего модуля
COption::SetOptionString("my.module", "api_key", "xyz123abc");

Этот метод обычно используется в обработчиках форм на страницах настроек модуля.

2. Современный D7-подход: \Bitrix\Main\Config\Option

В ядре D7 появился новый класс, который унифицирует работу с опциями и делает код чище.

Подготовка:codePHP

use Bitrix\Main\Config\Option;

Чтение настройки: Option::get()
Метод get() заменяет собой и GetOptionString, и GetOptionInt.

// Получаем E-mail администратора
$adminEmail = Option::get("main", "email_from", "default@example.com");

// Получаем ID инфоблока новостей (нужно приводить к int самостоятельно)
$newsIblockId = (int)Option::get("my.module", "news_iblock_id", 0);

Запись настройки: Option::set()codePHP

// Устанавливаем настройку
Option::set("my.module", "api_key", "xyz123abc-new");

Удаление настройки: Option::delete()
В D7 появился удобный метод для удаления опций.

// Удаляем настройку
Option::delete("my.module", ["name" => "api_key"]);

// Можно удалить все настройки для модуля
Option::delete("my.module");

Сравнение подходов

КритерийCOption (старое API)\Bitrix\Main\Config\Option (D7)
СтильПроцедурный, статические методыООП, статические методы в классе с неймспейсом
ЧтениеGetOptionString, GetOptionIntЕдиный метод get()
ЗаписьSetOptionString, SetOptionIntЕдиный метод set()
УдалениеRemoveOption (менее гибкий)delete() с фильтром
РекомендацииДля поддержки старого кодаДля всех новых разработок

Вывод:
Работа с настройками модулей — фундаментальная часть разработки на Битрикс.

Хотя старый COption все еще работает, для нового кода всегда используйте \Bitrix\Main\Config\Option.

Это делает ваш код более современным, читаемым и соответствующим стандартам D7.


COption, GetOptionString, SetOptionString, Bitrix\Main\Config\Option, настройки модуля, Битрикс, get, set, параметры.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Компонент main.ui.filter: Подключение и обработка фильтра для ГридаКомпонент main.ui.filter: Подключение и обработка фильтра для Грида

Таблица данных (main.ui.grid) почти всегда требует фильтрации. Для этого используется парный компонент bitrix:main.ui.filter. Он отображает строку поиска и выпадающую панель с условиями, сохраняет пресеты и настройки пользователя. Шаг 1: Описание полей

Как использовать метод SDK sale.propertyvariant.delete в Битрикс24Как использовать метод SDK sale.propertyvariant.delete в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK sale.propertyvariant.delete в Битрикс24», проанализируем

Разработка интернет-магазина электроники и бытовой техники на 1С-БитриксРазработка интернет-магазина электроники и бытовой техники на 1С-Битрикс

Создание современного интернет-магазина электроники и бытовой техники на платформе 1С-Битрикс позволяет автоматизировать продажи, обеспечить высокую конверсию и бесшовную интеграцию с учетными системами. Для ниши «электроники и бытовой техники» критически важны