Часто экстранет пользователи вашего корпортала забывают проставить группу в задаче, и Битриксом это никак не контролирует. Как следствие — потенциально потерянная задача и недовольный клиент. Простой обработчик ниже решит эту проблему.
И небольшие пояснения к нему (в принципе, можете подкорректировать):
1. Работает только для экстранетчиков (CExtranet::IsExtranetUser())
2. Только на экстранет-сайте (CExtranet::IsExtranetSite()). Тут фишка в том, что интранет-пользователь тоже может иметь галку привязки к экстранету, поэтому условия идут в паре.
3. Сортировка идет по дате последней активности в группе ('DATE_ACTIVITY' => 'DESC'). То есть, если у экстранетчика несколько групп, задача попадет в последнюю, где была активность. Есть риск промаха конечно, но это уже частные случаи.
Сам код обработчика, который надо разместить в init.php:
AddEventHandler('tasks', 'OnBeforeTaskAdd', 'OnBeforeTaskAddExtranet');
function OnBeforeTaskAddExtranet(&$fields) {
if (!$fields['GROUP_ID']) {
if (
\Bitrix\Main\Loader::includeModule('extranet') &&
CExtranet::IsExtranetSite() && CExtranet::IsExtranetUser()
) {
$res = CSocNetGroup::GetList(array('DATE_ACTIVITY' => 'DESC'), array('CHECK_PERMISSIONS' => $GLOBALS['USER']->getId(), 'SITE_ID' => SITE_ID));
if ($row = $res->fetch()) {
$fields['GROUP_ID'] = $row['ID'];
}
}
}
} |
.