Работа с событиями Битрикс
Последние записи
Перехват добавления элемента инфоблока
//Перехватываем создание элементов инфоблока после заполнения форм, для их добавления в Битрикс24
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("OnAfterIBlockElementAddClass", "OnAfterIBlockElementAddHandler"));
class OnAfterIBlockElementAddClass
{
function OnAfterIBlockElementAddHandler(&$arFields)
{
if (($arFields["IBLOCK_ID"] == 15) { //Работаем с инфоблоком с id=15
//Ваш код здесь
}
}
}
В массиве $arFields
лежит примерно следующее:
array (
'IBLOCK_ID' => 13,
'ACTIVE' => 'Y',
'NAME' => 'Имя элемента инфоблока',
'PROPERTY_VALUES' =>
array (
'bxajaxid' => '2b203f84d8a89c2',
'AJAX_CALL' => 'Y',
'sessid' => '8fa4b79357bcd2a',
'PHONE' => '899300000000',
'EMAIL' => '123@123.com',
'FIO' => 'Pround',
'COMMENT' =>
array (
'VALUE' =>
array (
'TEXT' => 'Комментарий пользователя',
'TYPE' => 'html',
),
),
'form_submit' => 'Добавить',
'PHPSESSID' => '2fd5f8352a64d5',
'BITRIX_SM_SOUND_LOGIN_PLAYED' => 'Y',
'BITRIX_SM_UIDL' => 'admin',
'BITRIX_SM_LOGIN' => 'admin',
'BITRIX_SM_DSC' => '44',
),
'SEARCHABLE_CONTENT' => 'Имя элемента инфоблока',
'CREATED_BY' => 1,
'MODIFIED_BY' => 1,
'~DATE_CREATE' => 'now()',
'~TIMESTAMP_X' => 'now()',
'XML_ID' => 3487,
'ID' => 3487,
'RESULT' => 3487,
)
Перехват писем
Перехват письма непосредственно перед отправкой
AddEventHandler('main', 'OnBeforeEventSend', Array("OnBeforeEventSendClass", "my_OnBeforeEventSend"));
class OnBeforeEventSendClass
{
function my_OnBeforeEventSend($arFields, $arTemplate)
{
//получим сообщение
}
}
//Перехват генерации почтового события с возможностью его отмены
AddEventHandler("main", "OnBeforeEventAdd", array("OnBeforeEventAddClass", "OnBeforeEventAddHandler"));
class OnBeforeEventAddClass{
function OnBeforeEventAddHandler(&$event, &$lid, &$arFields, &$message_id, &$files){
}
}
Обмен с 1С
Обработчик для сброса резерва товаров
AddEventHandler("catalog", "OnSuccessCatalogImport1C", "DSOnSuccessCatalogImport1C");
function DSOnSuccessCatalogImport1C()
{
if (CModule::IncludeModule("catalog"))
{
$db_res = CCatalogProduct::GetList(array("QUANTITY" => "DESC"), array(">QUANTITY_RESERVED" => 0), false, false);
while ($ar_res = $db_res->Fetch())
{
if(!CCatalogProduct::Update($ar_res["ID"], array("QUANTITY_RESERVED"=>0))){
AddMessage2Log("Ошибка обновления " . $ar_res["ID"]);
}//endif
}//endwhile
}
}
События:
OnCompleteCatalogImport1C //обработчик срабатывающий, после загрузки всех товаров и информации по ним
Комментарии