Куда пишет обработчик RegisterModuleDependences?

425
13 января 2017, 11:20

В битриксе есть обработчик, который я хочу использовать для сбора отчетов:

RegisterModuleDependences("iblock", "OnAfterIBlockElementAdd", "OnWeekAfterReviewAdded");

При отправке сообщений он должен писать в базу а потом выводить определенный промежуток. По сути отчет годовой, месячный, недельный. Однако не понятно, куда пишет эти события данный хук. К сожалению не нашел этого в документации. .. Есть сообщения о отзыве формируемые массивом:

AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnWeekAfterReviewAdded");
function OnWeekAfterReviewAdded($arFields)
{
    if($arFields['IBLOCK_ID'] == IBLOCK_REVIEWS_ID)
    {
        $arEventFields = array(
            'LINK_TO_REVIEW' => $arFields['PROPERTY_VALUES']['LINK'],
            'TEXT'           => $arFields['DETAIL_TEXT'],
            'NAME'           => $arFields['NAME'],
            'DATE'           => $arFields['DATE_ACTIVE_FROM'],
            'IP'           => $arFields['PROPERTY_VALUES']['IP'],
            'EMAIL'           => $arFields['PROPERTY_VALUES']['EMAIL'],
            'ID' => $arFields['IBLOCK_ID'],
            'TEST' => $arFields,
        );
        CEvent::Send('EMAIL_WEEK_REPORT', 's1', $arEventFields);
    } 
}

Мне же необходимо это событие отправлять в раз в месяц первого числа и в понедельник.

Answer 1

Вот ссылка на документацию RegisterModuleDependences. Как следует из названия Эта функция регистрирует зависимости модуля. Ее стоит использовать когда вы разрабатываете свой модуль для битрикса.

По сути вызов этого метода создает запись в таблице b_module_to_module.

Скорее всего вам нужен метод AddEventHandler, который регистрирует обработчик события на лету (без записи в базу данных).

Разница этих подходов:

  • RegisterModuleDependences - вызывается 1 раз за время работы проекта, например при установке модуля. Обработчик регистрируется в базе с указанием модуля, в котором определен обработчик. Срабатывание события, приведет к подключению модуля.
  • AddEventHandler - исполняется на каждом хите, дополняет массив обработчиков собранных из базы.

Используемый вами обработчик OnAfterIBlockElementAdd срабатывает на каждом изменении элемента инфоблока, но не гарантируется его вызов при изменении свойств.

Если вы хотите собирать факт изменений элементов инфоблоков, это можно сделать на странице настроек инфоблока, вкладка "Журнал событий"

READ ALSO
Наложение кликов

Наложение кликов

Есть два блокаНеобходимо, чтобы при клике на блок №2 не срабатывало действие клика по блоку №1

350
Указание User Agent в скриптах Google Docs

Указание User Agent в скриптах Google Docs

Пытаюсь вытащить данные с сайта, используя скрипты Google DocsЦель: заполнение таблицы

403
Парсер реквестов

Парсер реквестов

Считать URL ссылку с консоли, вывести на экран список всех параметровПараметры идут после ? и разделяются &

385