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

getInstance

Статический метод для редактирования пункта чек-листа.

Редактирование

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);

$item->update(['TITLE'=>'title 2']);


События

OnBeforeTaskCheckListItemUpdate ($task, $fields)
OnAfterTaskCheckListItemUpdate ($task, $oldFields, $newFields)

REST запрос

// 20190207175155
// http://site.ru/rest/1/********/tasks.task.checklist.update?taskId=1&checkListItemId=29&fields[TITLE]=Hello%20world
{
	"result": {
		"item": [
			{
				"ID": "1",
				"CREATED_BY": "1",
				"TASK_ID": "1",
				"TITLE": "Hello world",
				"IS_COMPLETE": "N",
				"SORT_INDEX": "1"
			}
		]
	},
	"time": {
		"start": 1549554715.4373,
		"finish": 1549554715.54894,
		"duration": 0.11163997650146484,
		"processing": 0.038207054138183594,
		"date_start": "2019-02-07T17:51:55+02:00",
		"date_finish": "2019-02-07T17:51:55+02:00"
	}
}

Удаление

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);
$item->delete();

События

OnBeforeTaskCheckListItemDelete ($task, $fields)
OnAfterTaskCheckListItemDelete ($task)

REST запрос

// 20190207175321
// http://site.ru/rest/1/********/tasks.task.checklist.delete?taskId=1&checkListItemId=29
{
	"result": {
		"item": true
	},
	"time": {
		"start": 1549554801.140385,
		"finish": 1549554801.24166,
		"duration": 0.10127520561218262,
		"processing": 0.032243967056274414,
		"date_start": "2019-02-07T17:53:21+02:00",
		"date_finish": "2019-02-07T17:53:21+02:00"
	}
}

Проверка доступа

Проверка доступа к действиям над пунктами чек-листа:

task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);

$task->isActionAllowed(\CTaskItem::ACTION_CHECKLIST_ADD_ITEMS); 

// для добавления пункта чеклиста, разрешение стоит спрашивать у задачи, а не у чек-листа!

$item = new \CTaskCheckListItem($task, $itemId);
// удаление
$item->isActionAllowed(\CTaskCheckListItem::ACTION_REMOVE);
// сортировка
$item->isActionAllowed(\CTaskCheckListItem::ACTION_REORDER);
// изменение
$item->isActionAllowed(\CTaskCheckListItem::ACTION_MODIFY);
// выполнение
$item->isActionAllowed(\CTaskCheckListItem::ACTION_TOGGLE);


Возможные варианты $actionId:

\CTaskCheckListItem::ACTION_ADD     = 0x01; // добавление
\CTaskCheckListItem::ACTION_MODIFY  = 0x02; // изменение
\CTaskCheckListItem::ACTION_REMOVE  = 0x03; // удаление
\CTaskCheckListItem::ACTION_TOGGLE  = 0x04; // выполнение
\CTaskCheckListItem::ACTION_REORDER = 0x05; // сортировку

Изменение сортировки

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);
$newIndex = 19;
$item->setSortIndex($newIndex);

События

OnBeforeTaskCheckListItemSort ($task, $fields)
OnAfterTaskCheckListItemSort ($task, $oldFields, $newFields)

Перемещение

Переместить пункт 5 под 2 пункт чеклиста:

$task = \CTaskItem::getInstance($taskId, $userId);
$item5 = new \CTaskCheckListItem($task, $itemId5);
$item2 = new \CTaskCheckListItem($task, $itemId2);

$item5->moveAfterItem($item2->getId());

События

OnCheckListItemMoveItem ($selectedItemId, $insertAfterItemId)

REST запрос

// 20190207175514
// http://site.ru/rest/1/********/tasks.task.checklist.moveafter?taskId=1&checkListItemId=2&afterItemId=6
{
	"result": {
		"item": [
			{
				"ID": "2",
				"CREATED_BY": "1",
				"TASK_ID": "1",
				"TITLE": "Hello world",
				"IS_COMPLETE": "N",
				"SORT_INDEX": "17"
			}
		]
	},
	"time": {
		"start": 1549555019.965198,
		"finish": 1549555020.053995,
		"duration": 0.08879685401916504,
		"processing": 0.035902976989746094,
		"date_start": "2019-02-07T17:56:59+02:00",
		"date_finish": "2019-02-07T17:57:00+02:00"
	}
}

Выполнение пункта

Проверка выполнен ли пункт чек-листа

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);

echo $item->iSComplete() ? 'Выполнен' : 'Не выполнен';

Выполнить пункт чек-листа:

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);

echo $item->сomplete();

События

См. метод update.

REST запрос

// 20190207175514
// http://site.ru/rest/1/********/tasks.task.checklist.complete?taskId=1&checkListItemId=2
{
	"result": {
		"item": [
			{
				"ID": "2",
				"CREATED_BY": "1",
				"TASK_ID": "1",
				"TITLE": "Hello world",
				"IS_COMPLETE": "Y",
				"SORT_INDEX": "4"
			}
		]
	},
	"time": {
		"start": 1549554914.300577,
		"finish": 1549554914.371372,
		"duration": 0.07079505920410156,
		"processing": 0.03411412239074707,
		"date_start": "2019-02-07T17:55:14+02:00",
		"date_finish": "2019-02-07T17:55:14+02:00"
	}
}

Невыполненный пункт

Пометить пункт чек-листа как невыполненный. В отличии от метода toggle этот метод не переключает выполненный/невыполненный, а принудительно выставляет “невыполненный”.

$task = \CTaskItem::getInstance($taskId, $userId);
$item = new \CTaskCheckListItem($task, $itemId);

echo $item->renew();

События

См. метод update.

REST запрос

// 20190207175514
// http://site.ru/rest/1/********/tasks.task.checklist.renew?taskId=1&checkListItemId=2
{
	"result": {
		"item": [
			{
				"ID": "2",
				"CREATED_BY": "1",
				"TASK_ID": "1",
				"TITLE": "Hello world",
				"IS_COMPLETE": "N",
				"SORT_INDEX": "4"
			}
		]
	},
	"time": {
		"start": 1549554914.300577,
		"finish": 1549554914.371372,
		"duration": 0.07079505920410156,
		"processing": 0.03411412239074707,
		"date_start": "2019-02-07T17:55:14+02:00",
		"date_finish": "2019-02-07T17:55:14+02:00"
	}
}


© «Битрикс», 2001-2024, «1С-Битрикс», 2024