Перейти к основному содержимому

События модуля

к сведению

Примеры событий можно вставить в файл 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);
}