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

Add

Описание и параметры

int
CTasks::Add(
	array arFields,
	array arParams = array()
);

Метод добавляет новую задачу.

Параметры метода

Параметр Описание С версии
arFields Массив Array("поле"=>"значение", ...). Содержит значения всех полей задачи. Поля:
  • TITLE - название задачи (можно искать по шаблону [%_] ;) ;
  • DESCRIPTION - описание задачи;
  • DEADLINE - крайний срок;
  • START_DATE_PLAN - плановая дата начала;
  • END_DATE_PLAN - плановая дата завершения;
  • PRIORITY - приоритет. Поле может принимать значения: [1] - Обычная [2] - Важная;
  • ACCOMPLICES - массив идентификаторов соисполнителей;
  • AUDITORS - массив идентификаторов наблюдателей;
  • TAGS - теги;
  • ALLOW_CHANGE_DEADLINE - флаг "Разрешить исполнителю (ответственному) менять крайний срок";
  • TASK_CONTROL - флаг "Принять работу после завершения задачи";
  • PARENT_ID - идентификатор родительской задачи;
  • DEPENDS_ON - идентификатор предыдущей задачи;
  • GROUP_ID - идентификатор рабочей группы;
  • RESPONSIBLE_ID - идентификатор исполнителя (ответственного);
  • TIME_ESTIMATE - плановые трудозатраты;
  • CREATED_BY - идентификатор постановщика;
  • DECLINE_REASON - причина отклонения задачи;
  • STATUS - мета-статус задачи;
  • DURATION_PLAN - планируемая длительность в часах или днях;
  • DURATION_TYPE - тип единицы измерения в планируемой длительности: days или hours;
  • MARK - оценка по задаче (возможные значения P (положительная) и N (отрицательная));
  • ALLOW_TIME_TRACKING - флаг включения учета затраченного времени по задаче;
  • ADD_IN_REPORT - флаг включения задачи в отчет по эффективности;
  • FORUM_ID - идентификатор форума, в котором хранятся комментарии к задаче;
  • FORUM_TOPIC_ID - идентификатор темы форума, в котором хранятся комментарии к задаче;
  • SITE_ID - идентификатор сайта. По умолчанию в это поле записывается идентификатор сайта, на котором создается задача;
  • MATCH_WORK_TIME - флаг, который показывает, что даты исполнения и крайний срок должны всегда устанавливаться в рабочее время;
arParams Массив дополнительных параметров. Необязательный. 11.5.4

Возвращаемое значение

Метод возвращает идентификатор добавленной задачи, если добавление прошло успешно. При возникновении ошибки метод вернет false, а в исключениях будут содержаться ошибки. 

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

<?
if (CModule::IncludeModule("tasks"))
{
	$arFields = Array(
		"TITLE" => "Task title",
		"DESCRIPTION" => "Task description",
		"RESPONSIBLE_ID" => 2,
		"GROUP_ID" => 3
	);
	$obTask = new CTasks;
	$ID = $obTask->Add($arFields);
	$success = ($ID>0);
	if($success)
	{
		echo "Ok!";
	}
	else
	{
		if($e = $APPLICATION->GetException())
			echo "Error: ".$e->GetString();  
	}
}?>

//Создание задачи с высоким приоритетом
{
	$arFields = Array("TITLE" => "High priority task",
		"DESCRIPTION" => "Task description",
		"RESPONSIBLE_ID" => 3,
		"CREATED_BY" => 1,
		"PRIORITY" => 2 // 2 соответствует высокому приоритету
	);
	$obTask = new CTasks;
	$obTask->Add($arFields);
}


Пользовательские комментарии

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

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Антон Пащенко
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
/**
* Метод выключает оповещение о созданной задаче при наличии флага DISABLE_NOTIFICATION = Y
*
* @throws ReflectionException
* @noinspection PhpUnusedParameterInspection
* @noinspection PhpExpressionResultUnusedInspection
*/
public static function disableNotification($iTaskId, $arFields): void
{
   if (isset($arFields["CUSTOM_PARAMS"]["DISABLE_NOTIFICATION"])
       && $arFields["CUSTOM_PARAMS"]["DISABLE_NOTIFICATION"] === "Y") {
       // Получение экземпляра \Bitrix\Tasks\Internals\Notification\Event\EventHandler
       $instance = EventHandler::getInstance();
       // Получение приватного поля «registry»
       $reflection = new ReflectionProperty(get_class($instance), 'registry');
       // Изменение уровня доступа к полю «registry»
       $reflection->setAccessible(true);
       // Удаление из массива «registry» событие создания задачи
       $registryValue = $reflection->getValue($instance);
       if (is_array($registryValue)) {
           $registryValue = array_filter($registryValue, function ($value) {
               /** @var \Bitrix\Tasks\Internals\Notification\Event\Event $value */
               if ($value->getData()["PARAMETERS"]["ENTITY_OPERATION"] === "ADD") {
                   return false;
               }
               return true;
           });
           $reflection->setValue($instance, $registryValue);
       }
   }
}
Зависает страница, ни в консоле ни в респонсе ошибок нет))
Что может быть?
0
jabir_sabitov
Сообщение не промодерировано, возможны ошибки и неточности.
DEPENDS_ON - это не "идентификатор предыдущей задачи", а идентификаторы зависимых задач.
Код
Bitrix\Main\Loader::requireModule('tasks');

print_r(
   CTaskItem::add(
      [
         'TITLE' => 'Задача',
         'RESPONSIBLE_ID' => 259,
         'DEPENDS_ON' => [21, 22]
      ],
      1 // User id.
   )
);
0
Михаил Миронов
Сообщение не промодерировано, возможны ошибки и неточности.
Выключение оповещения о созданной задаче.

Пусть создаём задачу через API:
Код
$arFields = array(
    "TITLE" => "Test",
    "RESPONSIBLE_ID" => 1,
    "CUSTOM_PARAMS" => array(
        "DISABLE_NOTIFICATION" => "Y", // Выключение оповещения о созданной задачи
    ),
);
\Bitrix\Tasks\Manager\Task::add(Main\Engine\CurrentUser::get()->getId(), $arFields);
Сделаем обработку поля "DISABLE_NOTIFICATION" => "Y".

Подпишемся на событие OnTaskAdd:
Код
AddEventHandler("tasks", "OnTaskAdd", ["TaskHandler","disableNotification"]); // События на создании задачи

Создадим обработчик, который удалит оповещение о добавлении задачи:
Код
/**
 * Метод выключает оповещение о созданной задаче при наличии флага DISABLE_NOTIFICATION = Y
 *
 * @throws ReflectionException
 * @noinspection PhpUnusedParameterInspection
 * @noinspection PhpExpressionResultUnusedInspection
 */
public static function disableNotification($iTaskId, $arFields): void
{
    if (isset($arFields["CUSTOM_PARAMS"]["DISABLE_NOTIFICATION"])
        && $arFields["CUSTOM_PARAMS"]["DISABLE_NOTIFICATION"] === "Y") {
        // Получение экземпляра \Bitrix\Tasks\Internals\Notification\Event\EventHandler
        $instance = EventHandler::getInstance();

        // Получение приватного поля «registry»
        $reflection = new ReflectionProperty(get_class($instance), 'registry');

        // Изменение уровня доступа к полю «registry»
        $reflection->setAccessible(true);

        // Удаление из массива «registry» событие создания задачи
        $registryValue = $reflection->getValue($instance);
        if (is_array($registryValue)) {
            $registryValue = array_filter($registryValue, function ($value) {
                /** @var \Bitrix\Tasks\Internals\Notification\Event\Event $value */
                if ($value->getData()["PARAMETERS"]["ENTITY_OPERATION"] === "ADD") {
                    return false;
                }
                return true;
            });
            $reflection->setValue($instance, $registryValue);
        }
    }
}

© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх