Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/okr2.yacl.site/local/php_interface/
Upload File :
Current File : /home/bitrix/ext_www/okr2.yacl.site/local/php_interface/handlers.php

<?// обработчики

$handler = Bitrix\Main\EventManager::getInstance();

$handler->addEventHandler(
    'tasks',
    'OnBeforeTaskUpdate',
    ['DgtlHandlers', 'onBeforeTaskAddOrUpdateHandler']
);

$handler->addEventHandler(
    'tasks',
    'OnBeforeTaskAdd',
    ['DgtlHandlers', 'onBeforeTaskAddOrUpdateHandler']
);

Class DgtlHandlers
{
    function onBeforeTaskAddOrUpdateHandler($id, $fields = [], $task = []) {
        if (empty($fields) && !empty($id)) { // add task -- no id
            $fields = $id;
        }
        if ($fields['PARENT_ID'] > 0 || $fields['SE_PARENTTASK']['ID'] > 0) {
            $parentId = $fields['PARENT_ID'];
            if (!$parentId) {
                $parentId = $fields['SE_PARENTTASK']['ID'];
            }
            $parentTask = \Bitrix\Tasks\Internals\TaskTable::getList([
                'filter' => ['ID' => $parentId],
                'select' => ['UF_KEY_ID', 'UF_OBJ']
            ])->fetch();
            if ($fields['UF_KEY_ID'] > 0 && $fields['UF_KEY_ID'] != $parentTask['UF_KEY_ID']) {
                throw new \Bitrix\Tasks\ActionFailedException("Показатель эффективности не совпадает с родительской задачей!");
            }
            if ($fields['UF_OBJ'] != $parentTask['UF_OBJ']) {
                throw new \Bitrix\Tasks\ActionFailedException("Цель не совпадает с родительской задачей!");
            }
        }
    }
}