Глобальные настройки модулей: 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 дней гарантии