@venom1996

Как сделать несколько чек листов в одной задаче?

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("tasks");

    $arFields = Array(
        "TITLE" => "Task title",
        "DESCRIPTION" => "Task description",
        "RESPONSIBLE_ID" => 721,
    );

    $obTask = new CTasks;
    $ID = $obTask->Add($arFields);
    $success = ($ID>0);

    if($success)
    {
        echo "Ok";
        $task = \CTaskItem::getInstance($ID, 721);
        \CTaskCheckListItem::add($task, ['TITLE'=>'First item', 'SORT_INDEX'=>10, 'IS_COMPLETE'=>'N']);
       
    }
    else
    {
        if($e = $APPLICATION->GetException())
            echo "Error: ".$e->GetString();
}?>

задача создаётся с чек листом, но как сделать несколько чек листов ?
  • Вопрос задан
  • 827 просмотров
Пригласить эксперта
Ответы на вопрос 3
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Измените свой код создания чек-листа, можете воспользоваться фрагментом:

use \Bitrix\Main,
	\Bitrix\Tasks\CheckList\Task
	;

Main\Loader::IncludeModule('tasks');

/**
 * @var integer Идентификатор задачи
 */
$taskId = 6;

/**
 * @var integer Идентификатор пользователя
 */
$userId = 1;

$result = Task\TaskCheckListFacade::add(
	$taskId,
	$userId,
	[
		'TITLE'        => 'Test data',
		'PARENT_ID'    => 0,
		'SORT_INDEX'   => '10',
		'IS_COMPLETE'  => 'N',
		'IS_IMPORTANT' => 'N',
		'MEMBERS'      => [],
		'ATTACHMENTS'  => [],
	]
);

var_dump($result);
Ответ написан
@ksu92
//Сначала создаем собственно сам чек-лист (обертку) c 'PARENT_ID' (так, мы можем создать несколько таких "оберток") :
$result = TaskCheckListFacade::add(
$taskID,
$userID,
[
'TITLE' => $checkList['TITLE'],
'PARENT_ID' => 0,
'SORT_INDEX' => $checkList['SORT_INDEX'],
'IS_COMPLETE' => $checkList['IS_COMPLETE'],
'IS_IMPORTANT' => $checkList['IS_IMPORTANT'],
]
);
//Затем добавляем в него пункты, указывая для них $result->getData()['ITEM']->getFields()['ID'] в качестве 'PARENT_ID'
$item = TaskCheckListFacade::add(
$taskID,
$userID,
[
'TITLE' => $listItem['TITLE'],
'PARENT_ID' => $result->getData()['ITEM']->getFields()['ID'],
'SORT_INDEX' => $listItem['SORT_INDEX'],
'IS_COMPLETE' => $listItem['IS_COMPLETE'],
'IS_IMPORTANT' => $listItem['IS_IMPORTANT'],
]
);
Ответ написан
@iTJack
Добрый день! На дворе сентябрь 22 года, но увы, документации по методу CheckListFacade так и не появилось.

Подскажите пожалуйста правильную связку. Мне надо создать в 1 задаче 2 разных чек-листа. Они создаются без проблем.

$taskId = 1;
$userId = 1;
$task = CTaskItem::getInstance($taskId, $userId);

$result = Task\TaskCheckListFacade::add(
  $taskId,
  $userId,
  [
    'TITLE'        => 'Test data',
    'PARENT_ID'    => 0,
    'SORT_INDEX'   => '10',
    'IS_COMPLETE'  => 'N',
    'IS_IMPORTANT' => 'N',
    'MEMBERS'      => [],
    'ATTACHMENTS'  => [],
  ]
);
\CTaskCheckListItem::add($task, ['TITLE'=>'TITLE1', 'SORT_INDEX'=>10, 'IS_COMPLETE'=>'N']);

$result2 = Task\TaskCheckListFacade::add(
  $taskId,
  $userId,
  [
    'TITLE'        => 'Test data2',
    'PARENT_ID'    => 0,
    'SORT_INDEX'   => '20',
    'IS_COMPLETE'  => 'N',
    'IS_IMPORTANT' => 'N',
    'MEMBERS'      => [],
    'ATTACHMENTS'  => [],
  ]
);

\CTaskCheckListItem::add($task, ['TITLE'=>'TITLE1', 'SORT_INDEX'=>10, 'IS_COMPLETE'=>'N']);


Но, все созданные поля прикрепляются к первому чек-листу. Что и логично, так как нигде не указывается куда их прицепить. Подскажите как принудительно указать, полям к какому чек-листу им прикрепляться? Пункты описанные выше - не работают. Спасибо!

P.S. Последний пункт работает, но это дичайшее извращение =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы