function Delete($ID) { global $DB, $USER_FIELD_MANAGER; $ID = intval($ID); if ($ID > 0) { $rsTemplate = CTaskTemplates::GetByID($ID); if ($arTemplate = $rsTemplate->Fetch()) { // Remove all agents for this template /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ');', 'tasks'); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 0);', 'tasks'); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ CAgent::RemoveAgent('CTasks::RepeatTaskByTemplateId(' . $ID . ', 1);', 'tasks'); if ($arTemplate["FILES"]) { $arFiles = unserialize($arTemplate["FILES"]); if (is_array($arFiles)) { $arFilesToDelete = array(); foreach ($arFiles as $file) { $rsFile = CTaskFiles::GetList(array(), array("FILE_ID" => $file)); if (!($arFile = $rsFile->Fetch())) { $arFilesToDelete[] = $file; } } foreach ($arFilesToDelete as $file) { CFile::Delete($file); } } } $dbConnection = \Bitrix\Main\HttpApplication::getConnection(); $strSql = "DELETE FROM b_tasks_template WHERE ID = " . $ID; if ($DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__)) { $USER_FIELD_MANAGER->Delete("TASKS_TASK_TEMPLATE", $ID); // drop children (sub-templates) $dbConnection->query("delete from b_tasks_template where ID in (" . Template\DependencyTable::getSubTreeSql($ID) . ")"); // drop tree records for this templates and it`s children try { Template\DependencyTable::dropLinkL($ID); } catch (\Bitrix\Tasks\DB\Tree\TargetNodeNotFoundException $e) { } return true; } } } return false; }