Документация для разработчиков
Темная тема

OnTaskUpdate

Scope: task Права на выполнение: для всех

Событие, вызываемое при обновлении задачи.

Поля ответа:

Поле Описание
FIELDS_BEFORE поля задачи до события. В случае отсутствия доступных полей задачи данное поле будет содержать значение undefined.
FIELDS_AFTER поля задачи после события. В случае отсутствия доступных полей задачи данное поле будет содержать значение undefined.
IS_ACCESSIBLE_BEFORE была ли доступна задача до события (на чтение). Возможные значения:
  • Y (Yes) - да;
  • N (No) - нет;
  • undefined - не определено или проверка не производилась.
IS_ACCESSIBLE_AFTER стала ли доступна задача после события (на чтение). Возможные значения:
  • Y (Yes) - да;
  • N (No) - нет;
  • undefined - не определено или проверка не производилась.

Пример значений полей:

$arEventFields = array(
	'FIELDS_BEFORE' => array('ID' => $taskId), // идентификатор изменяемой задачи
	'FIELDS_AFTER' => array('ID' => $taskId), // идентификатор изменяемой задачи
	'IS_ACCESSIBLE_BEFORE' => 'undefined', // проверка доступности задачи на чтение не производилась
	'IS_ACCESSIBLE_AFTER' => 'undefined' // проверка доступности задачи на чтение не производилась
);


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Михаил Касев
Сообщение не промодерировано, возможны ошибки и неточности.
Также интересует, как поля FIELDS_BEFORE, FIELDS_AFTER, согласно документации возвращающие поля задачи до события и после соответственно, каждый раз отдают только ID задачи. Непонятно, как получать информацию о том, какие поля обновились, не сохраняя у себя состояния.
0
Андрей Ухмыленко
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
в поля FIELDS_BEFORE и FIELDS_AFTER  всегда  передается лишь ID задачи, какой бы то ни был апдейт задачи. Как тогда узнавать,  что именно  произошло с задачей, кроме как вести у себя ее историю и сверяться при изменениях?
Та же история, передаются лишь ID задачи до и после изменения. Я хочу получить полную информацию по задаче или хотя бы те поля, которые были изменены. Мне выдается только следующее:

Array
(
   [event] => ONTASKUPDATE
   [data] => Array
       (
           [FIELDS_BEFORE] => Array
               (
                   [ID] => 39
               )

           [FIELDS_AFTER] => Array
               (
                   [ID] => 39
               )

           [IS_ACCESSIBLE_BEFORE] => undefined
           [IS_ACCESSIBLE_AFTER] => undefined
       )
...
)
1
Арнольд Аристархович
Сообщение не промодерировано, возможны ошибки и неточности.
в поля FIELDS_BEFORE и FIELDS_AFTER всегда передается лишь ID задачи, какой бы то ни был апдейт задачи. Как тогда узнавать, что именно произошло с задачей, кроме как вести у себя ее историю и сверяться при изменениях?
1
Атем Прозоров
Сообщение не промодерировано, возможны ошибки и неточности.
Извиняюсь, в предыдущем комменте опечатка, подписка на событие вот так происходит (в третьем параметре массив заключил в кавычки):

\Bitrix\Main\EventManager::getInstance()->addEventHandler('tasks', 'OnTaskUpdate', ["TaskManager", "processTask"]);

Ну и раз уж речь зашла про подписки на события, то лучше сделать так: (чтобы избавиться от статических методов)

\Bitrix\Main\EventManager::getInstance()->addEventHandler('tasks', 'OnTaskUpdate', 'processTask'); // processTask- это название функции

function processTask($id, $data)
{
   $manager = TaskManager::getInstance()->processTask($id, $data); // TaskManager в данном случае - это синглтон, у которого есть публичный нестатический метод processTask, а функция processTask - это всего лишь функция-хелпер чтобы избежать вызова статического метода при подписке на события
}

Ну и если говорить об элегантности и чистой архитектуре, то лучше вообще третьим параметром передавать анонимную функцию, в которой получать экземпляр TaskManager из DI-контейнера (которого к сожалению в битре по умолчанию нет) и передавать ему $id и $data
© «Битрикс», 2001-2024, «1С-Битрикс», 2024