Выгрузка в highload блок, прикручивание события - alma-com/wiki-bitrix GitHub Wiki

Событие для синхронизации купонов и карт выгружаемых из 1С. Необходимо купоны выгружаемые из 1С прикрутить к скидочным купонам CMS 1С Битрикс. В init.php нужно написать следующее:

<?php
namespace Partner\InformatsionnyeKarty;

/*
 * Регистрация событий для higloadblock Информационные карты
 */
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'InformatsionnyeKartyOnAfterUpdate', '\Partner\InformatsionnyeKarty\KartyOnAfterAddUpdate');
$eventManager->addEventHandler('', 'InformatsionnyeKartyOnAfterAdd', '\Partner\InformatsionnyeKarty\KartyOnAfterAddUpdate');
$eventManager->addEventHandler('', 'InformatsionnyeKartyOnAfterDelete', '\Partner\InformatsionnyeKarty\KartyOnAfterAddUpdate');

/*
 * Получение списка карт и сохранение их как купонов для скидки
 */
function KartyOnAfterAddUpdate(\Bitrix\Main\Entity\Event $event)
{
    $cards = array();
    $codeField = "UF_KODKARTY";
    $idDiscount = "5";

    $listKarty = \InformatsionnyeKartyTable::getList();
    while($arKarty = $listKarty->Fetch()){
        $cards[$arKarty[$codeField]] = $arKarty[$codeField];
    }

    if (\CModule::IncludeModule("catalog")){
        //Удаление всех купонов
        $deleteCoupon = \CCatalogDiscountCoupon::DeleteByDiscountID($idDiscount);

        //Добавление купонов
        foreach($cards as $coupon){
            $addCoupon = \CCatalogDiscountCoupon::add(array(
                "DISCOUNT_ID" => $idDiscount,
                "ONE_TIME" => "N",
                "COUPON" => $coupon
            ));
        }
    }
}