Чек-листы

Команды этого раздела предназначены для управления чек-листами в задачах.

Примечание: все команды располагаются в пространсве имен Bitrix\Tasks\V2\Public\Command\CheckList

Структура чек-листа

Перед работой с командами важно понимать, как устроен чек-лист. В объекте Bitrix\Tasks\V2\Internal\Entity\Task поле checklist представляет собой массив, каждый элемент которого является ассоциативным массивом, описывающим один пункт чек-листа.

Структура одного пункта:

Ключ Тип Описание
id int ID существующего пункта (не указывается для новых)
text string Текст пункта
isComplete string Статус выполнения (‘Y’ - выполнен, ‘N’ - не выполнен)
sortIndex int Индекс сортировки
parentId int ID родительского пункта для создания вложенности

Пример передачи чек-листа в объект Task:

$task->checklist = [
    ['id' => 1, 'text' => 'Существующий пункт', 'isComplete' => 'Y'],
    ['text' => 'Новый пункт', 'isComplete' => 'N', 'sortIndex' => 20],
];

SaveCheckListCommand

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

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

Параметр Тип Обязательный Описание
$task Entity\Task Да Объект задачи с обновленным чек-листом
$updatedBy int Да ID пользователя, вносящего изменения
$taskBeforeUpdate ?Entity\Task Нет Состояние задачи до обновления (для аудита)
$useConsistency bool Нет Использовать консистентность данных (по умолчанию false)
$skipNotification bool Нет Пропустить отправку уведомлений (по умолчанию false)

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

use Bitrix\Tasks\V2\Public\Command\CheckList\SaveCheckListCommand;
use Bitrix\Tasks\V2\Internal\Entity\Task;

$taskWithCheckList = new Task(
    id: 123,
    checklist: [
        ['id' => 1, 'text' => 'Пункт 1', 'isComplete' => 'Y'],
        ['text' => 'Новый пункт 2'],
    ]
);

$command = new SaveCheckListCommand(
    task: $taskWithCheckList,
    updatedBy: 1
);

$result = $command->run();

if ($result->isSuccess()) {
    echo "Чек-лист сохранен.";
} else {
    // Обработка ошибок
}

CompleteCheckListItemsCommand

CompleteCheckListItemsCommand отмечает один или несколько пунктов чек-листа как выполненные.

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

Параметр Тип Обязательный Описание
$ids array Да Массив ID пунктов чек-листа для завершения
$userId int Да ID пользователя, выполняющего действие

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

use Bitrix\Tasks\V2\Public\Command\CheckList\CompleteCheckListItemsCommand;

$command = new CompleteCheckListItemsCommand(
    ids: [10, 12],
    userId: 1
);

$result = $command->run();

if ($result->isSuccess()) {
    echo "Пункты чек-листа завершены.";
} else {
    // Обработка ошибок
}

RenewCheckListItemsCommand

RenewCheckListItemsCommand возобновляет один или несколько выполненных пунктов чек-листа.

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

Параметр Тип Обязательный Описание
$ids array Да Массив ID пунктов чек-листа для возобновления
$userId int Да ID пользователя, выполняющего действие

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

use Bitrix\Tasks\V2\Public\Command\CheckList\RenewCheckListItemsCommand;

$command = new RenewCheckListItemsCommand(
    ids: [10, 12],
    userId: 1
);

$result = $command->run();

if ($result->isSuccess()) {
    echo "Пункты чек-листа возобновлены.";
} else {
    // Обработка ошибок
}

ExpandCheckListCommand

ExpandCheckListCommand разворачивает (показывает) содержимое чек-листа в интерфейсе пользователя.

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

Параметр Тип Обязательный Описание
$checkListId int Да ID чек-листа
$userId int Да ID пользователя

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

use Bitrix\Tasks\V2\Public\Command\CheckList\ExpandCheckListCommand;

$command = new ExpandCheckListCommand(checkListId: 5, userId: 1);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Чек-лист развернут.";
} else {
    // Обработка ошибок
}

CollapseCheckListCommand

CollapseCheckListCommand сворачивает (скрывает) содержимое чек-листа в интерфейсе пользователя.

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

Параметр Тип Обязательный Описание
$checkListId int Да ID чек-листа
$userId int Да ID пользователя

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

use Bitrix\Tasks\V2\Public\Command\CheckList\CollapseCheckListCommand;

$command = new CollapseCheckListCommand(checkListId: 5, userId: 1);
$result = $command->run();

if ($result->isSuccess()) {
    echo "Чек-лист свернут.";
} else {
    // Обработка ошибок
}