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

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

Last updated