Группа по умолчанию для задач экстранета

  • Группа по умолчанию для задач экстранета

    Антон Долганин 4 Сентября 2015 9:20 3767
    Часто экстранет пользователи вашего корпортала забывают проставить группу в задаче, и Битриксом это никак не контролирует. Как следствие — потенциально потерянная задача и недовольный клиент. Простой обработчик ниже решит эту проблему.

    И небольшие пояснения к нему (в принципе, можете подкорректировать):

    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'];
             }
          }
       }
    }


    .
Дмитрий
4 Сентября 2015 17:18
А как Вы задачи мониторите?
Антон Долганин
4 Сентября 2015 18:17
Дмитрий, поясните вопрос, пожалуйста.
Игорь
4 Сентября 2015 20:15
Такой же обработчик в принципе нужен на deadline, галку "Принять задачу" и "Учет времени" :D Поэтому правильно было бы уже разработать для модуля "Задачи" настройки политики требований.
Игорь
4 Сентября 2015 20:15
Но это к битриксам конечно же ....