Прозвучала довольно интересная идея перевешивать задачи на непосредственного руководителя в случае, если сотрудник не предпринял никаких действий по решению этой задачи за определённый период времени.
Вот пример кода, который реализует эту логику[spoiler]:
function CheckExecutionTasks()
{
if(
!CModule::IncludeModule('iblock')
|| !CModule::IncludeModule('tasks')
|| !CModule::IncludeModule('intranet')
) {
return "";
}
// $days - количество рабочих дней, в течении которых задача не изменялась
$days = 3;
switch(date("N", strtotime("-$days days")))
{
case 6: $days += 1; break;
case 7: $days += 2; break;
}
global $DB;
$tasks = new CTasks();
$rsTasks = $tasks->GetList(
array(),
array(
// в агенте нет объекта $USER, поэтому не проверям доступ
"CHECK_PERMISSIONS" => "N",
// задача не принята, новая или просрочена
"<STATUS" => 3,
"<CHANGED_DATE" => date(
$DB->DateFormatToPHP(FORMAT_DATETIME),
strtotime("-$days days")
),
),
array("ID", "RESPONSIBLE_ID")
);
while($arTask = $rsTasks->GetNext())
{
if(
($rsUser = CUser::GetByID($arTask["RESPONSIBLE_ID"]))
&& ($arUser = $rsUser->GetNext())
&& ($arManagers = CIntranetUtils::GetDepartmentManager($arUser["UF_DEPARTMENT"], $arUser["ID"], true))
&& ($arManager = current($arManagers))
) {
$tasks->Update(
$arTask["ID"],
array("RESPONSIBLE_ID" => $arManager["ID"])
);
}
}
return "CheckExecutionTasks();";
}
Его необходимо вставить в файл /bitrix/php_interface/init.php.
Затем потребуется создать агент в "Настройки - Инструменты - Агенты", в параметре "Функция агента" которого указать "CheckExecutionTasks();". А в параметре "Интервал (сек.)", соответственно, интервал в секундах, через который будет проверяться выполнение задачи сотрудником, например, 86400 секунд - 1 день.
Корякин Александр Спасибо. Но хотелось бы добавить еще и текст когда задача будет перенесена. Типа сотрудник с задачей не справился либо не отреагировал на нее. Тогда было бы вообще супер. Еще раз спасибо)
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».