Участники задач

В Bitrix24 задачи могут иметь несколько типов участников:

  • Ответственный (responsible) — пользователь, который выполняет задачу. У задачи может быть только один ответственный.
  • Соисполнители (accomplices) — пользователи, которые помогают ответственному в выполнении задачи.
  • Наблюдатели / Аудиторы (auditors) — пользователи, которые следят за ходом выполнения задачи и получают уведомления об изменениях.
  • Создатель (creator) — пользователь, создавший задачу. Может быть передан другому пользователю.

Пространства имён

Команды для управления участниками находятся в двух пространствах имён:

Тип участника Пространство имён
Наблюдатели (watch/unwatch) Bitrix\Tasks\V2\Public\Command\Task\Audit
Стейкхолдеры (делегирование, соисполнители, аудиторы) Bitrix\Tasks\V2\Public\Command\Task\Stakeholder

Наблюдатели (Audit)

Команды из пространства имён Bitrix\Tasks\V2\Public\Command\Task\Audit позволяют управлять наблюдателями задачи по одному пользователю.

WatchTaskCommand

WatchTaskCommand добавляет пользователя в список наблюдателей задачи. Наблюдатели получают уведомления об изменениях.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$userId int Да ID пользователя, выполняющего действие
$auditorId int Да ID пользователя, которого добавляют в наблюдатели
$skipNotification bool Нет Пропустить отправку уведомления (по умолчанию false)
$useConsistency bool Нет Использовать консистентность данных (по умолчанию false)

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

use Bitrix\Tasks\V2\Public\Command\Task\Audit\WatchTaskCommand;

$command = new WatchTaskCommand(
    taskId: 100,
    userId: 1,
    auditorId: 2
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Пользователь добавлен в наблюдатели.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

UnwatchTaskCommand

UnwatchTaskCommand удаляет пользователя из списка наблюдателей задачи.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$userId int Да ID пользователя, выполняющего действие
$auditorId int Да ID пользователя, которого удаляют из наблюдателей
$useConsistency bool Нет Использовать консистентность данных (по умолчанию false)

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

use Bitrix\Tasks\V2\Public\Command\Task\Audit\UnwatchTaskCommand;

$command = new UnwatchTaskCommand(
    taskId: 100,
    userId: 1,
    auditorId: 2
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Пользователь удален из наблюдателей.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

Стейкхолдеры (Stakeholder)

Команды из пространства имён Bitrix\Tasks\V2\Public\Command\Task\Stakeholder позволяют управлять ответственным, соисполнителями, аудиторами и создателем задачи. Все команды принимают объект UpdateConfig для настройки процесса обновления.

DelegateCommand

DelegateCommand меняет ответственного исполнителя задачи. Используется для делегирования задачи другому пользователю.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$responsibleId int Да ID нового ответственного пользователя
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\DelegateCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(
    userId: 1,
    skipNotifications: false,
);

$command = new DelegateCommand(
    taskId: 100,
    responsibleId: 5,
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Ответственный изменён.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

SetAccomplicesCommand

SetAccomplicesCommand устанавливает список соисполнителей задачи. Заменяет текущий список соисполнителей на переданный.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$accompliceIds int[] Да Массив ID пользователей — соисполнителей
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\SetAccomplicesCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(userId: 1);

$command = new SetAccomplicesCommand(
    taskId: 100,
    accompliceIds: [3, 4, 5],
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Соисполнители обновлены.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

SetAuditorsCommand

SetAuditorsCommand устанавливает список аудиторов (наблюдателей) задачи. Заменяет текущий список аудиторов на переданный.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$auditorIds int[] Да Массив ID пользователей — аудиторов
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\SetAuditorsCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(userId: 1);

$command = new SetAuditorsCommand(
    taskId: 100,
    auditorIds: [10, 11],
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Аудиторы обновлены.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

AddAuditorsCommand

AddAuditorsCommand добавляет новых аудиторов к уже существующему списку наблюдателей задачи (в отличие от SetAuditorsCommand, который заменяет список).

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$auditorIds int[] Да Массив ID пользователей для добавления в аудиторы
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\AddAuditorsCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(userId: 1);

$command = new AddAuditorsCommand(
    taskId: 100,
    auditorIds: [12, 13],
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Аудиторы добавлены.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

DeleteAuditorsCommand

DeleteAuditorsCommand удаляет указанных аудиторов из списка наблюдателей задачи.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$auditorIds int[] Да Массив ID пользователей для удаления из аудиторов
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\DeleteAuditorsCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(userId: 1);

$command = new DeleteAuditorsCommand(
    taskId: 100,
    auditorIds: [10],
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Аудиторы удалены.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

UpdateCreatorCommand

UpdateCreatorCommand меняет создателя задачи. Позволяет передать авторство задачи другому пользователю, при этом необходимо указать текущего ответственного.

Входные аргументы:

Параметр Тип Обязательный Описание
$taskId int Да ID задачи
$creatorId int Да ID нового создателя задачи
$responsibleId int Да ID текущего ответственного
$config UpdateConfig Да Конфигурация обновления задачи

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

use Bitrix\Tasks\V2\Public\Command\Task\Stakeholder\UpdateCreatorCommand;
use Bitrix\Tasks\V2\Internal\Service\Task\Action\Update\Config\UpdateConfig;

$config = new UpdateConfig(userId: 1);

$command = new UpdateCreatorCommand(
    taskId: 100,
    creatorId: 7,
    responsibleId: 5,
    config: $config,
);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Создатель задачи изменён.";
} else {
    foreach ($result->getErrors() as $error) {
        echo "Ошибка: {$error->getMessage()}";
    }
}

Сравнение команд для аудиторов

Команда Пространство имён Действие Принимает
WatchTaskCommand Audit Добавить одного наблюдателя int $auditorId
UnwatchTaskCommand Audit Удалить одного наблюдателя int $auditorId
SetAuditorsCommand Stakeholder Заменить весь список аудиторов int[] $auditorIds
AddAuditorsCommand Stakeholder Добавить аудиторов к существующим int[] $auditorIds
DeleteAuditorsCommand Stakeholder Удалить указанных аудиторов int[] $auditorIds

Команды из Audit работают с одним пользователем и не требуют UpdateConfig. Команды из Stakeholder работают с массивами пользователей и принимают UpdateConfig для настройки поведения обновления (уведомления, бизнес-процессы и т.д.).