Если ваш бизнес для ведения задач использует коробочную версию битрикс встает задача, чтобы руководитель или офис менеджер был наблюдателем всех задач в системе.
В облаке и в коробке можно использовать приложение Куратор. Однако в кураторе нельзя задать настройку сразу всем пользователям требуется подтверждение со стороны наблюдаемого и бывают задержки в добавлении. Можно сделать и свой модуль, однако я решил обойтись простым обработчиком события.
Приступим к реализации.
1) заходим в директорию bitrix/php_interface, тут создаем новый файл, допустим будет Custom.php, это будет наш кастомный класс куда будем допиливать свои обработчики.
2) в init.php подключим наш файл, но чтоб избежать проблем, сделаем это с проверкой на наличие файла, вот так:
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/Custom.php")) require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/Custom.php");
Теперь перейдем к содержимому самого кастомного класса:
<? #подключаем на событие OnTaskAdd наш класс CustomClass и вызываем в нем функцию CustomAddAuditors AddEventHandler("tasks", "OnTaskAdd",array("CustomClass","CustomAddAuditors")); #ниже наш класс class CustomClass { #получаем нашу новую задачу и через метод AddAuditors добавляем в нее ID наблюдателей через массив, например 1 и 5 (директор и офис менеджер) static function CustomAddAuditors($ID) { if (CModule::IncludeModule("tasks")) { $arAuditors = array(1,5); CTasks::AddAuditors($ID, $arAuditors); } } } ?>
Так же можно в зависимости от ответственного, выбирать наблюдателя.
Смотрим значение RESPONSIBLE_ID в задаче и назначаем. В идеале же, все это сделать полноценным модулем.
static function CustomAddAuditors($ID, $arFields) { if (CModule::IncludeModule("tasks")) { if ($arFields[RESPONSIBLE_ID] == 578) { $arAuditors[] = 531; } CTasks::AddAuditors($ID, $arAuditors); } }
Вот и все. В несколько строк, мы сделали автоматическое добавление наблюдателя во все новые задачи.
К сожалению, в описанном методе не приходят уведомления о создании задачи тем, кто добавлен в наблюдатели.
Однако остальные уведомления прилетают
Как временное решение можно применить роботов. Как жаль что сейчас они работают только под пользователем и нельзя сделать общего)