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

События Highload-блоков

  1. OnBeforeAdd событие вызывается до добавление элемента highload(HL) блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена
  2. OnAdd событие вызывается перед добавлением в бд, после валидации полей. Модификация данных не доступна
  3. OnAfterAdd событие вызывается после добавления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после добавления нового элемента данного HL-блока
  4. OnBeforeUpdate событие вызывается до обновления элемента highload(HL) блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена
  5. OnUpdate событие вызывается перед обновлением в бд, после валидации полей. Модификация данных не доступна
  6. OnAfterUpdate событие вызывается после обновления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после обновления элемента данного HL-блока
  7. OnBeforeDelete событие вызывается до удаления элемента highload(HL) блока. Можно отменить удаление
  8. OnDelete событие вызывается перед удалением из бд. Отмена удаления не доступна
  9. OnAfterDelete событие вызывается после удаления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после удаления элемента данного HL-блока

Перехват события highload блока

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
// WebinarOptions название highload блока
$eventManager->addEventHandler('', 'WebinarOptionsOnAfterAdd', 'OnAfterAdd'); 
// функция обработчик
function OnAfterAdd(\Bitrix\Main\Entity\Event $event) {}

Событие Highload блока OnBeforeAdd

Событие вызывается до добавление элемента highload блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'WebinarOptionsBeforeAdd', 'OnBeforeAdd');
function OnBeforeAdd(\Bitrix\Main\Entity\Event $event) {
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет WebinarOptionsBeforeAdd
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
    //получить все доступные в этом событие данные
    $arParameters = $event->getParameters();
    $result = new \Bitrix\Main\Entity\EventResult();
  //модификация данных
    if (empty($arFields['UF_FULL_DESCRIPTION'])) {
        $arFields['UF_FULL_DESCRIPTION'] = $arFields['UF_DESCRIPTION'];
        $result->modifyFields($arFields);
    }
  // для тестирования модификации данных закомментируйте этот блок
    if (empty($arFields['UF_DESCRIPTION'])) {
        $arErrors = Array();
        $arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_DESCRIPTION"), "Ошибка в поле UF_DESCRIPTION. Поле не должно быть пустым!");
        $result->setErrors($arErrors);
    }
  
    return $result;
}

Событие Highload блока OnAdd

Событие вызывается перед добавлением в бд, после валидации полей. Модификация данных не доступна.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAdd', 'OnAdd');
function OnAdd(\Bitrix\Main\Entity\Event $event) {
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnAdd
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
}

Событие Highload блока OnAfterAdd

Событие вызывается после добавления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после добавления нового элемента данного highload блока.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterAdd', 'OnAfterAdd');
function OnAfterAdd(\Bitrix\Main\Entity\Event $event) {
    //id добавляемого элемента
    $id = $event->getParameter("id");
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnAfterAdd
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
}

Событие Highload блока OnBeforeUpdate

Событие вызывается до обновления элемента highload блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnBeforeUpdate', 'OnBeforeUpdate');
function OnBeforeUpdate(\Bitrix\Main\Entity\Event $event) {
    $id = $event->getParameter("id");
    //id обновляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnBeforeUpdate
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
    $result = new \Bitrix\Main\Entity\EventResult();
    //модификация данных
    if (empty($arFields['UF_FULL_DESCRIPTION'])) {
        $arFields['UF_FULL_DESCRIPTION'] = $arFields['UF_DESCRIPTION'];
        $result->modifyFields($arFields);
    }
    // для тестирования модификации данных закомментируйте этот блок
    if (empty($arFields['UF_DESCRIPTION'])) {
        $arErrors = Array();
        $arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_DESCRIPTION"), "Ошибка в поле UF_DESCRIPTION. Поле не должно быть пустым!");
        $result->setErrors($arErrors);
    }
    return $result;
}

Событие Highload блока OnUpdate

Событие вызывается перед обновлением в бд, после валидации полей. Модификация данных не доступна.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnUpdate', 'OnUpdate');
function OnUpdate(\Bitrix\Main\Entity\Event $event) {
    $id = $event->getParameter("id");
    //id обновляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnUpdate
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
}

Событие Highload блока OnAfterUpdate

Событие вызывается после обновления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после обновления элемента данного highload блока.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterUpdate', 'OnAfterUpdate');
function OnAfterUpdate(\Bitrix\Main\Entity\Event $event) {
    $id = $event->getParameter("id");
    //id обновляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnAfterUpdate
    $eventType = $event->getEventType();
    // получаем массив полей хайлоад блока
    $arFields = $event->getParameter("fields");
}

Событие Highload блока OnBeforeDelete

Событие вызывается до удаления элемента highload блока. Можно отменить удаление.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnBeforeDelete', 'OnBeforeDelete');
function OnBeforeDelete(\Bitrix\Main\Entity\Event $event) {
    // поля в этом событии недоступны, только id
    $id = $event->getParameter("id");
    //id удаляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnBeforeDelete
    $eventType = $event->getEventType();
    $result = new \Bitrix\Main\Entity\EventResult();
    if ($id <= 20) {
        $arErrors = Array();
        $arErrors[] = new \Bitrix\Main\Entity\EntityError("Ошибка! Нельзя удалять первые 20 элементов!");
        $result->setErrors($arErrors);
    }
    return $result;
}

Событие Highload блока OnDelete

Событие вызывается перед удалением из бд. Отмена удаления не доступна.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnDelete', 'OnDelete');
function OnDelete(\Bitrix\Main\Entity\Event $event) {
    // поля в этом событии недоступны, только id
    $id = $event->getParameter("id");
    //id удаляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnDelete
    $eventType = $event->getEventType();
}

Событие Highload блока OnAfterDelete

Событие вызывается после удаления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после удаления элемента данного highload блока.

init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterDelete', 'OnAfterDelete');
function OnAfterDelete(\Bitrix\Main\Entity\Event $event) {
    $id = $event->getParameter("id");
    //id удаляемого элемента
    $id = $id["ID"];
    $entity = $event->getEntity();
    $entityDataClass = $entity->GetDataClass();
    // тип события. вернет ColorsOnAfterAdd
    $eventType = $event->getEventType();
  if ($id > 30 && $id < 1000) {
    // ваша логика....
    }
}
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг