Полный цикл в digital

События

Иногда возникает необходимость повлиять на работу какой-либо функции ядра 1С-Битрикс, например, вам нужно сделать так, чтобы при добавлении нового заказа автоматически отсылалось оповещение менеджеру магазина посредством SMS. Делать это при помощи прямой модификации функций ядра системы смысла мало, поскольку эти изменения будут жить лишь до первого обновления системы, поэтому есть смысл поискать решения на основе событий.

Что такое событие

В ходе выполнения некоторых API функций, в определённых точках установлены вызовы определённых функций, так называемых обработчиков события. Какие функции-обработчики должны быть вызваны в каком месте и при каком событии нужно устанавливать вызовом функции, регистрирующей обработчики.

Примеры

Есть событие OnOrderAdd, которое вызывается после добавления нового заказа. Вы хотите выполнить какие-то действия сразу после добавления заказа.

Изменяем файл /bitrix/php_interface/init.php, либо /local/php_interface/init.php если сайтов много, а нам нужен только конкретный, добавляем строки в конец файла. Мы назначаем обработчик OrderAddHandler событию OnOrderAdd. Теперь в функции OrderAddHandler мы можем добавить код, который должен выполнять при создании нового заказа:

init.phpAddEventHandler('sale', 'OnOrderAdd', 'OrderAddHandler');

function OrderAddHandler(&$val)
{
  // тут наши действия
}

Необходимо чтобы пользователей с определенными именами не регистрировало в системе. Очевидно, что нам нужно найти событие, которое бы вызывалось ДО добавления юзера в систему, это событие OnBeforeUserAdd. Из кода понятно, мы проверяем совпадает ли логин, который выбрал пользователь при регистрации с набором логинов в массиве $bad_logins, которые нельзя использовать. Если пользователь выбрал нехороший логин, выскакивает сообщение об ошибке Данный логин запрещен в системе и система не регистрирует пользователя:

init.phpAddEventHandler('main', 'OnBeforeUserAdd', 'OnBeforeUserAddHandler');

function OnBeforeUserAddHandler(&$arFields)
{
    $bad_logins = Array('admin', 'administrator');
    if(in_array($arFields['LOGIN'], $bad_logins))
    {
        global $APPLICATION;
        $APPLICATION->throwException('Данный логин запрещен в системе');
        return false;
    }
}

Для каждого модуля, доступны свои события которые можно пременять по приведенной выше методике. Все возможные события, которые знает Битрикс можно посмотреть в официальной документации.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг