Yandex Metrika
sanches.free 1 просмотр

Глобальные настройки модулей: COption, b_option и лимиты

Зачем COption вместо «своего» конфига

В 1С‑Битрикс значения параметров модулей, которые должны пережить хит и храниться в базе с привязкой к MODULE_ID и опционально к SITE_ID, принято записывать через класс COption. Такие записи попадают в таблицу b_option; штатные установщики модулей и часть админ‑форм тоже идут этим путём, что упрощает резервное копирование и переносы.

Записать строковое значение

Типичный пример для модуля sale — сохранить собственную переменную (имя и смысл подбираете под задачу):

COption::SetOptionString('sale', 'myvar', $val);

Прочитать с подстановкой по умолчанию

Если ключа ещё нет, вернётся третий аргумент — удобно задать стартовое значение без отдельной инициализации:

$val = COption::GetOptionString('sale', 'myvar', '100500');

Удалить ключ

COption::RemoveOption('sale', 'myvar');

Полные сигнатуры

Для точной передачи описания и привязки к сайту используйте расширенные формы:

COption::SetOptionString(
    $moduleName,
    $varName,
    $value = '',
    $description = false,
    $siteId = false
);

COption::GetOptionString(
    $moduleName,
    $varName,
    $defaultValue = false,
    $siteId = false,
    $exactSite = false
);

Актуальное поведение и значения флагов лучше сверять с официальной справкой: COption::SetOptionString и COption::GetOptionString.

Ограничения длины

Платформа накладывает практические лимиты на поля в b_option: длина идентификатора модуля — до 50 символов, сохраняемое значение — до 2000 символов. Для больших структур разумнее отдельная таблица или Highload‑блок, а в опции хранить только ключ или версию схемы.

Как строка выглядит в MySQL

После вызова SetOptionString в таблице появится строка с полями MODULE_ID, NAME, VALUE, DESCRIPTION, SITE_ID. Условный пример вставки на языке SQL (для понимания структуры; в работе используйте API ядра):

INSERT INTO `b_option` (`MODULE_ID`, `NAME`, `VALUE`, `DESCRIPTION`, `SITE_ID`)
VALUES ('sale', 'myvar', '100500', NULL, NULL);

Справочно: какие MODULE_ID встречаются чаще всего

На типовой установке в b_option могут фигурировать десятки префиксов — из часто встречающихся: main, iblock, sale, catalog, search, security, seo, mail, fileman, subscribe и др. Чтобы увидеть фактический перечень на своей базе, достаточно выборки уникальных модулей:

SELECT DISTINCT MODULE_ID FROM b_option ORDER BY MODULE_ID;

Собственные «логические» модули в рамках проекта тоже допустимы, если вы контролируете префикс и не пересекаете зарезервированные имена ядра.

Кратко

  • SetOptionString / GetOptionString / RemoveOption — стандартный путь для глобальных строковых настроек модулей.
  • Данные лежат в b_option; учитывайте лимиты длины и необходимость привязки к сайту через параметры API.
  • Для объёмных или структурированных данных опция — только указатель, не хранилище простыни.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии