Событие вызывается при создании пользователя модулем. В целом можно использовать стандартные события 1С-Битрикс если необходима работа со стандартными полями пользователя. В этом событии дополнительно доступен объект импортируемого контрагента.
\Bitrix\Main\EventManager::getInstance()->addEventHandler('despi.moyskladusers','OnBeforeUserBxAdd','OnBeforeUserBxAddHandler');functionOnBeforeUserBxAddHandler(\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, модуль его заменить перед добавлением пользователяreturnnew\Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arrImportFields);}
OnBeforeUserBxUpdate
Событие аналогичное OnBeforeUserBxAdd с той разницей, что доступны 2 дополнительных параметра: $user и $userFields.
\Bitrix\Main\EventManager::getInstance()->addEventHandler('despi.moyskladusers','OnBeforeUserBxUpdate','OnBeforeUserBxUpdateHandler');functionOnBeforeUserBxUpdateHandler(\Bitrix\Main\Event $event){ $eventParams = $event->getParameters();//Стандартные поля, которые обновяться у пользователя БУС $arrImportFields = $eventParams['arrImportFields'];//Контрагент на основе которго добавляется пользователь. Доступ к полям происходит через объект //Пример: $counterParty->name //имя контрагента $counterParty = $eventParams['counterParty'];//Стандартные поля текущего пользователя $user= $eventParams['user'];//Дополнительные поля пользователя UF_*//Редактировать эти поля в событии не получится, для этого есть событие OnBeforeUserFieldsUpdate $userFields= $eventParams['userFields'];//Обязательно возвратить $arrImportFields, модуль его заменить перед обновлением пользователяreturnnew\Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arrImportFields);}
OnBeforeUserFieldsUpdate
Событие вызывается каждый раз, когда обновляются доп. поля у пользователя. В событии можно их редактировать. Событие срабатывает всегда, но сам массив доп. полей может быть пустым, т.к. модуль добавляет только измененные доп. поля. В любом случае всегда можно добавить в этот массив свои доп. поля и модуль их обновит.
\Bitrix\Main\EventManager::getInstance()->addEventHandler('despi.moyskladusers','OnBeforeUserFieldsUpdate','OnBeforeUserFieldsUpdateHandler');functionOnBeforeUserFieldsUpdateHandler(\Bitrix\Main\Event $event){ $eventParams = $event->getParameters();//Доп. поля, которые обновяться у пользователя БУС. Может быть пустым массивом, если нет измененных доп. полей $newSetValues = $eventParams['newSetValues'];//Текущие стандартные поля пользователя $user = $eventParams['user'];//Текущие доп. поля пользователя. Весь список доп. полей у пользователя. $userFields = $eventParams['userFields'];//Объект контрагента $counterParty = $eventParams['counterParty'];//В событии можно добавлять доп. поля в массив $newSetValues, он далее обновит эти поля у пользователя.//Обязательно возвратить $newSetValuesreturnnew\Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $newSetValues);}