События настроек модуля
[OnBeforeAllOptionsBuild] Событие для создания своих табов в настройках модуля
Событие позволяет добавить кастомные вкладки и опции в настройки модуля стандартным механизмом Битрикс.
- Описание события
- Пример вызова события
- Примеры использования
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
arAllOptions | array | Массив всех опций модуля (ключ = ID вкладки, значение = массив опций) |
aTabs | array | Массив вкладок настроек модуля |
isSaveHit | bool | Флаг, указывающий что текущий запрос — сохранение настроек |
Возвращаемое значение
Верните EventResult::SUCCESS с массивом, содержащим arAllOptions и aTabs:
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'arAllOptions' => $arAllOptions,
'aTabs' => $aTabs
]);
//файл /bitrix/php_interface/init.php
//подписываемся на событие
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeAllOptionsBuild',
'OnBeforeAllOptionsBuildHandler'
);
function OnBeforeAllOptionsBuildHandler(\Bitrix\Main\Event $event)
{
//получаем параметры события
$eventParams = $event->getParameters();
//массив всех опций модуля
// $arAllOptions — ассоциативный массив, ключ = ID таба
// [
// 'webhook' => [
// 'Заголовок секции',
// ['option_name', 'Label', 'default_value', ['text', 30]],
// // ...
// ],
// 'export' => [...],
// 'import' => [...],
// // ...
// ];
$arAllOptions = $eventParams['arAllOptions'];
//массив вкладок для работы опций
// $aTabs — массив вкладок
// [
// [
// 'DIV' => 'webhook',
// 'TAB' => 'Веб-хуки',
// 'ICON' => 'main_settings',
// 'TITLE' => 'Настройки веб-хуков'
// ],
// // ...
// ];
$aTabs = $eventParams['aTabs'];
//Пример добавления кастомных опций
//Далее стандартным способом для битриксовых модулей добавляем табы и параметры
$arAllOptions['custom_tab'][] = 'Custom tab';
$arAllOptions['custom_tab'][] = ["custom_option", "Custom option", '', ['checkbox', "N"]];
$aTabs[] = [
"DIV" => "custom_tab",
"TAB" => 'Custom tab',
"ICON" => "custom_tab",
"TITLE" => 'Custom tab'
];
//$result оставляем всегда таким перед возвращением результата события
$result = [
'arAllOptions' => $arAllOptions,
'aTabs' => $aTabs
];
//возвращаем SUCCESS если нужно поменять массив опций
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $result);
}
Результат работы события:

Добавление таба с разными типами опций
Пример добавления кастомной вкладки с несколькими типами опций: текстовое поле, чекбокс, выпадающий список и мультиселект.
function OnBeforeAllOptionsBuildHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$arAllOptions = $eventParams['arAllOptions'];
$aTabs = $eventParams['aTabs'];
// Заголовок секции
$arAllOptions['my_integration'][] = 'Настройки интеграции';
// Текстовое поле (тип text, ширина 50 символов)
$arAllOptions['my_integration'][] = [
'my_integration_api_url',
'URL внешнего API',
'https://api.example.com',
['text', 50]
];
// Чекбокс
$arAllOptions['my_integration'][] = [
'my_integration_enabled',
'Включить интеграцию',
'N',
['checkbox', 'N']
];
// Выпадающий список (selectbox)
$arAllOptions['my_integration'][] = [
'my_integration_mode',
'Режим работы',
'sync',
['selectbox', [
'sync' => 'Синхронный',
'async' => 'Асинхронный',
'manual' => 'Ручной',
]]
];
// Мультиселект (multiselectbox)
$arAllOptions['my_integration'][] = [
'my_integration_entities',
'Сущности для синхронизации',
'',
['multiselectbox', [
'products' => 'Товары',
'orders' => 'Заказы',
'customers' => 'Контрагенты',
'stocks' => 'Остатки',
]]
];
// Регистрируем вкладку
$aTabs[] = [
'DIV' => 'my_integration',
'TAB' => 'Моя интеграция',
'ICON' => 'main_settings',
'TITLE' => 'Настройки кастомной интеграции',
];
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'arAllOptions' => $arAllOptions,
'aTabs' => $aTabs,
]);
}
[OnBeforeWebHookOptionsBuild] Событие для вывода веб-хуков в соответствующей вкладке
Событие позволяет добавить кастомные веб-хуки на вкладку «Веб-хуки» в настройках модуля. Добавленные веб-хуки будут подчиняться общим правилам обработки веб-хуков в модуле.
- Описание события
- Пример вызова события
- Примеры использования
Параметры события
Событие не передаёт параметров (пустой массив).
Возвращаемое значение
Верните EventResult::SUCCESS с массивом формата:
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'result' => [
'entity_type' => ['ACTION_1', 'ACTION_2', ...]
]
]);
Где entity_type — тип сущности МС (move, supply, purchaseorder, demand и др.), а массив действий — одно или несколько из: CREATE, UPDATE, DELETE.
//файл /bitrix/php_interface/init.php
//подписываемся на событие
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeWebHookOptionsBuild',
'OnBeforeWebHookOptionsBuildHandler'
);
function OnBeforeWebHookOptionsBuildHandler(\Bitrix\Main\Event $event)
{
//возвращаем массив такого вида:
// 'result' => [...] - у массива единственный ключ - result,
// внутри result идет массив такой структуры:
// 'entity' => ['UPDATE', 'CREATE', ...],
// где 'entity' - сущность в МС, на которое подписываем веб-хук
// массив у ключа сущности это три события веб-хука 'UPDATE', 'CREATE', 'DELETE'
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'result' => [
'move' => ['CREATE', 'UPDATE'],
'supply' => ['UPDATE', 'DELETE'],
'purchaseorder' => ['CREATE'],
'demand' => ['UPDATE']
]
]);
}
В результате работы события во вкладке "веб-хуки" появятся новые веб-хуки, которые подчиняются общим правилам обработки веб-хуков в модуле.

Подписка на складские операции
Добавление веб-хуков для отслеживания перемещений, приёмок и заказов поставщикам — для автоматического обновления остатков при изменении складских документов.
function OnBeforeWebHookOptionsBuildHandler(\Bitrix\Main\Event $event)
{
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'result' => [
// Перемещения — отслеживаем создание и обновление
'move' => ['CREATE', 'UPDATE'],
// Приёмки — отслеживаем все действия
'supply' => ['CREATE', 'UPDATE', 'DELETE'],
// Заказы поставщикам — отслеживаем создание и обновление
'purchaseorder' => ['CREATE', 'UPDATE'],
]
]);
}