Список событий
Событие | Вызывается | Метод | С версии |
---|---|---|---|
OnBeforeTaskAdd | Перед добавлением задачи. | CTasks::Add | 10.0.5 |
OnBeforeTaskDelete | Перед удалением задачи. | CTasks::Delete | 10.0.5 |
OnBeforeTaskUpdate | Перед обновлением задачи. | CTasks::Update | 10.0.5 |
OnTaskAdd | После добавления задачи. | CTasks::Add | 10.0.5 |
OnTaskDelete | После удаления задачи. | CTasks::Delete | 10.0.5 |
OnTaskUpdate | После обновления задачи. | CTasks::Update | 10.0.5 |
OnBeforeTaskNotificationSend | Перед отправкой уведомлений в IM. | CTaskNotifications::SendMessage | 12.5.0 |
OnBeforeTaskElapsedTimeAdd | Перед добавлением записи о затраченном времени в лог действий над задачей. | CTaskElapsedTime::Add | 14.0.16 |
OnBeforeTaskElapsedTimeUpdate | Перед изменением записи о затраченном времени в логе действий над задачей. | CTaskElapsedTime::Update | 14.0.16 |
OnBeforeTaskElapsedTimeDelete | Перед удалением записи о затраченном времени из лога действий над задачей. | CTaskElapsedTime::Delete | 14.0.16 |
OnTaskElapsedTimeAdd | После добавления в лог действий над задачей записи о затраченном времени. | CTaskElapsedTime::Add | 12.5.0 |
OnTaskElapsedTimeUpdate | После изменения в логе действий над задачей записи о затраченном времени. | CTaskElapsedTime::Update | 12.5.0 |
OnTaskElapsedTimeDelete | После удаления из лога действий над задачей записи о затраченном времени. | CTaskElapsedTime::Delete | 12.5.0 |
OnBaseAllowedActionsMapInit | При инициализации карты дозволенных действий над задачей. | CTaskItem::getBaseAllowedActions | 12.5.3 |
OnTaskReminderAdd | При добавлении напоминания к задаче. | CTaskReminders::Add | 14.5.10 |
Сообщение не промодерировано, возможны ошибки и неточности.
|
$eventManager->addEventHandler('tasks', 'OnTaskUpdate', 'onAfterUpdate');
function onAfterUpdate($taskID, array $fields): array { TaskTable::update($fields['ID'],['TITLE' => 'Обновлено из обработчика']); return $fields; } |
Сообщение не промодерировано, возможны ошибки и неточности.
|
$eventManager->addEventHandler('tasks', 'OnTaskUpdate', 'onAfterUpdate');
function onAfterUpdate($taskID, array $fields): array { $idTask = 66; $fields = TaskTable::getById($idTask)->fetch(); Debug::dumpToFile($fields); return $fields; } |
Сообщение не промодерировано, возможны ошибки и неточности.
|
$eventManager->addEventHandler('tasks', 'OnTaskUpdate', 'onAfterUpdate');
function onAfterUpdate($taskID, array $fields): array { Debug::dumpToFile('ok'); return $fields; } |
Сообщение не промодерировано, возможны ошибки и неточности.
|
Может кому-то поможет:
Раньше везде корректно работало \Bitrix\Tasks\ActionFailedException, сейчас надо типизировать под конкретные действия: use Bitrix\Tasks\Control\Exception\TaskAddException; use Bitrix\Tasks\Control\Exception\TaskNotFoundException; use Bitrix\Tasks\Control\Exception\TaskUpdateException; Если этого не сделать, то, например, в OnBeforeTaskUpdate вызовом throw new \Bitrix\Tasks\ActionFailedException не удастся вывести своё сообщение об ошибке. |
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
Как вывести свой? Событие OnBeforeTaskUpdate при попытке сменить крайний срок задачи | ||
Сообщение не промодерировано, возможны ошибки и неточности.
|
В событии OnBeforeTaskUpdate
не хватает параметра, который бы показывал, изменена задача вручную или в результате работы автоматики, например - смена статуса задачи на завершенный при переводе привязанной сделки в успех. Бывает ситуация, когда закрытие привязанных к сделкам задач неприемлемо при переводе сделки в успех, тогда можно было бы по этому параметру отменять изменение статуса задачи. Обнаружил, что при автозакрытии задачи через сделку, приходят дополнительно параметры "START_DATE_PLAN":null, "END_DATE_PLAN":null, если ранее в задаче не использовались плановые даты начала и завершения. Однако определять источник изменений по ним выглядит крайне ненадежным, т.к. иногда эти поля все же могут использоваться. Получилось решить только проставлением в поле сделки таймстампа при событии OnBeforeCrmDealUpdate, и последующим его сравнением с таймстампом при вызове OnBeforeTaskUpdate |
Сообщение не промодерировано, возможны ошибки и неточности.
|
||||
ВНИМАНИЕ!
При событии OnBeforeTaskUpdate есть баг. Если в метод CTask::Update() (и CTaskItem::update() соответственно), будут переданы только основные поля задачи, без пользовательских, то добавлять в обработчике события OnBeforeTaskUpdate значения пользовательских полей становится бессмысленно, так как они будут проигнорированы. Такое можно словить при обработке смены статуса задачи. В этом случае советую использовать метод:
| ||||
Никита Кургалин
|
||
Если нужно добавить исключение, нужно использовать "ActionFailedException":
| ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.