Заметки
Почему не стоит всё писать в init.php
init.php подключается во многих запросах портала. Если положить туда выборку всех сделок или обращение к внешнему API, эта работа начнёт выполняться далеко за пределами нужного сценария.
Оставьте в файле подключение автозагрузки и регистрацию обработчиков. Сам обработчик вынесите в класс, а тяжёлую обработку — в очередь или отдельную команду.
Особенно легко ошибиться с кодом на верхнем уровне файла:
$deals = CCrmDeal::GetListEx([], ['CLOSED' => 'N']); Такой запрос запускается при подключении файла. Размещение той же строки внутри функции меняет момент выполнения: работа начнётся только при вызове функции.
Ещё одна причина не превращать init.php в большой скрипт — цена синтаксической ошибки. Она может нарушить и публичные страницы, и административный раздел. Код модуля проще проверять и подключать в нужном контексте.