Добавить можно
Ниже представлен вариант программного добавления, например как это делаем мы и добавляем в модули.
Создается отдельный файл с установщиком событий и константами для конкретных событий, чтобы меньше было ошибок.
<?
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
/**
* Класс для работы с модулем ожидания событий, для атвоматического добавления своих событий для отслеживания
*/
class WaitEvent
{
/**
* При выполнении запросов к приложению в Б24
*/
const B24_SYNC = 'MY_MODULE_B24_SYNC';
//...
public static function getTypes()
{
$arReturn = [];
$arReturn[] = [
'CODE' => self::B24_SYNC,
'NAME' => Loc::getMessage('MESSAGE.B24_SYNC'),
];
//...
return $arReturn;
}
public static function reinstall()
{
self::uninstall();
self::install();
return true;
}
public static function install()
{
if (!\Bitrix\Main\Loader::includeModule('bxmaker.waitevent')) {
return false;
}
$arTypes = self::getTypes();
foreach ($arTypes as $type) {
$ar = \BXmaker\WaitEvent\EventTable::getList([
'filter' => [
'CODE' => $type['CODE']
],
'limit' => 1
])->fetch();
// если уже есть, пропускаем
if ($ar) {
continue;
}
$result = \BXmaker\WaitEvent\EventTable::add([
'CODE' => $type['CODE'],
'NAME' => $type['NAME']
]);
if (!$result) {
//..
}
}
return true;
}
public static function uninstall()
{
if (!\Bitrix\Main\Loader::includeModule('bxmaker.waitevent')) {
return false;
}
$arTypes = self::getTypes();
$arCodes = array_column($arTypes, 'CODE');
if (empty($arCodes)) {
return false;
}
$dbr = \BXmaker\WaitEvent\EventTable::getList([
'filter' => [
'CODE' => $arCodes
],
]);
while ($ar = $dbr->fetch()) {
$result = \BXmaker\WaitEvent\EventTable::delete($ar['ID']);
if (!$result) {
//..
}
}
return true;
}
}
Теперь выполним переустановку собственных типов, чтобы они появились в списке собственных событий. Выполним в админке в комнадной php строке сдледующий код
WaitEvent::reinstall();
Пример результат после длобавления собственных событий, в нашем случае. Тексты и коды размыты.
Теперь в своем модуле, каком-то обработчике или гдето еще можно в журнал добавить событие со своим типом
\CEventLog::Log(
\CEventLog::SEVERITY_ERROR,
WaitEvent::B24_APP,
'main', // измените на свой модуль
'',
);
Теперь при добавлении события которое необходимо отследить, в списке типов вы сможете легко найти нужное и включить уведомление для отслеживания. Также можно отслеживать все уведомления любого модуля, условия очнеье гибкие.