События модуля
к сведению
Примеры событий можно вставить в файл init.php.
События при импорте пользователя
OnBeforeUserBxAdd
Событие вызывается при создании пользователя модулем. В целом можно использовать стандартные события 1С-Битрикс если необходима работа со стандартными полями пользователя. В этом событии дополнительно доступен объект импортируемого контрагента.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'despi.moyskladusers',
'OnBeforeUserBxAdd',
'OnBeforeUserBxAddHandler'
);
function OnBeforeUserBxAddHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
//Стандартные поля, которые добавятся в пользователя БУС
$arrImportFields = $eventParams['arrImportFields'];
//Контрагент на основе которго добавляется пользователь. Доступ к полям происходит через объект
//Пример: $counterParty->name //имя контрагента
$counterParty = $eventParams['counterParty'];
//В теле события можно редактировать $arrImportFields, тем самым будет аналогичное поведенеие onBeforeUserAdd
//Пример:
//$arrImportFields['NAME'] = $counterParty->name;
/*
//Для наглядности можно вывести логи. Сам логи будет виден в соответствующей вкладке настроек модуля.
$logger = new \Despi\MoySkladUsers\Debug\Loger();
$logger->addInfoMessage("Поля добавляемого пользователя");
$logger->addInfoMessage(print_r($arrImportFields, true));
$logger->addInfoMessage("Объект контрагента");
$logger->addInfoMessage(print_r($counterParty, true));
$logger->exportLog("Событие OnBeforeUserBxAdd");
*/
//Обязательно возвратить $arrImportFields, модуль его заменить перед добавлением пользователя
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arrImportFields);
}
OnBeforeUserBxUpdate
Событие аналогичное OnBeforeUserBxAdd с той разницей, что доступны 2 дополнительных параметра: $user и $userFields.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'despi.moyskladusers',
'OnBeforeUserBxUpdate',
'OnBeforeUserBxUpdateHandler'
);
function OnBeforeUserBxUpdateHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
//Стандартные поля, которые обновяться у пользователя БУС
$arrImportFields = $eventParams['arrImportFields'];
//Контрагент на основе которго добавляется пользователь. Доступ к полям происходит через объект
//Пример: $counterParty->name //имя контрагента
$counterParty = $eventParams['counterParty'];
//Стандартные поля текущего пользователя
$user= $eventParams['user'];
//Дополнительные поля пользователя UF_*
//Редактировать эти поля в событии не получится, для этого есть событие OnBeforeUserFieldsUpdate
$userFields= $eventParams['userFields'];
//Обязательно возвратить $arrImportFields, модуль его заменить перед обновлением пользователя
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arrImportFields);
}
OnBeforeUserFieldsUpdate
Событие вызывается каждый раз, когда обновляются доп. поля у пользователя. В событии можно их редактировать. Событие срабатывает всегда, но сам массив доп. полей может быть пустым, т.к. модуль добавляет только измененные доп. поля. В любом случае всегда можно добавить в этот массив свои доп. поля и модуль их обновит.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'despi.moyskladusers',
'OnBeforeUserFieldsUpdate',
'OnBeforeUserFieldsUpdateHandler'
);
function OnBeforeUserFieldsUpdateHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
//Доп. поля, которые обновяться у пользователя БУС. Может быть пустым массивом, если нет измененных доп. полей
$newSetValues = $eventParams['newSetValues'];
//Текущие стандартные поля пользователя
$user = $eventParams['user'];
//Текущие доп. поля пользователя. Весь список доп. полей у пользователя.
$userFields = $eventParams['userFields'];
//Объект контрагента
$counterParty = $eventParams['counterParty'];
//В событии можно добавлять доп. поля в массив $newSetValues, он далее обновит эти поля у пользователя.
//Обязательно возвратить $newSetValues
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $newSetValues);
}