Остановка запущенных задач при старте новой.

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Остановка запущенных задач, при старте новой.

Задача: При запуске новой задачи останавливать старые.

normal_13618.jpg

Решение: Создаем обработчик на событие OnBeforeTaskUpdate

Код решения:
// register start task handler
 
AddEventHandler
        ("tasks", "OnBeforeTaskUpdate", array("StartTask", "OnBeforeTaskUpdateHandler"));

class StartTask {

// Create task function
    function OnBeforeTaskUpdateHandler($id, $arFields) {
        if ($arFields["STATUS"] == CTasks::STATE_IN_PROGRESS) {

            // Stop all started tasks
            //
            
            $obTask = new CTasks;
            $arFilter = array();
            $arFilter["REAL_STATUS"] = $obTask::STATE_IN_PROGRESS;
            $arFilter["STATUS_CHANGED_BY"] = CUser::GetID();

            $tasksList = $obTask->GetList(
                    $arOrder = array(), $arFilter, $arSelect = array()
            );

            while ($task = $tasksList->GetNext()) :
                
                if ($task['ID'] != $id) {
                    $uptask = array();
                    $uptask['STATUS'] = $obTask::STATE_DEFERRED;
                    $ret = $obTask->Update($task['ID'], $uptask);
                }

            endwhile;
        }
    }
} 

 

 

Источник: http://dev.1c-bitrix.ru/community/webdev/user/43781/blog/8672/

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA