Чтобы это заработало, нужно регистрировать событие через registerEventHandler именно, чтобы была возможность указать параметр TO_MODULE_ID.
И в Sender::onTriggerList должен быть указан тот же moduleId что и в registerEventHandler
Итого, регистрируем событие (предпочтительнее сделать в отдельном модуль именно, в момент установки его):[CODE]$eventManager->addEventHandler(
"sender",
"onTriggerList",
"module_name",
\Class\Events\Sender::class
"onTriggerList"
);[/CODE]
И класс Sender соответственно с тем же moduleId:
[CODE]class Sender
{
public static function onTriggerList(): EventResult
{
return new EventResult(
EventResult::SUCCESS,
[
'TRIGGER' => Class\Sender\TriggerFirstOrder::class
],
'module_name'
);
}
} [/CODE]*заменить module_name на имя своего модуля
Причина кроется в \Bitrix\Sender\Trigger\Manager::getClassList, там передается параметр $filter в \Bitrix\Main\Event в момент сохранения, который фильтрует события по TO_MODULE_ID. При этом TO_MODULE_ID есть только у зарегистрированных событий, а не добавленных в рантайме. Т.е. обходных путей никаких нет (я не нашел).
И в Sender::onTriggerList должен быть указан тот же moduleId что и в registerEventHandler
Итого, регистрируем событие (предпочтительнее сделать в отдельном модуль именно, в момент установки его):[CODE]$eventManager->addEventHandler(
"sender",
"onTriggerList",
"module_name",
\Class\Events\Sender::class
"onTriggerList"
);[/CODE]
И класс Sender соответственно с тем же moduleId:
[CODE]class Sender
{
public static function onTriggerList(): EventResult
{
return new EventResult(
EventResult::SUCCESS,
[
'TRIGGER' => Class\Sender\TriggerFirstOrder::class
],
'module_name'
);
}
} [/CODE]*заменить module_name на имя своего модуля
Причина кроется в \Bitrix\Sender\Trigger\Manager::getClassList, там передается параметр $filter в \Bitrix\Main\Event в момент сохранения, который фильтрует события по TO_MODULE_ID. При этом TO_MODULE_ID есть только у зарегистрированных событий, а не добавленных в рантайме. Т.е. обходных путей никаких нет (я не нашел).