• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/taskservice.php
  • Класс: BitrixTasksScrumServiceTaskService
  • Вызов: TaskService::createScrumItem
static function createScrumItem(int $taskId, array $fields, $previousFields = []): void
{
	$isBacklogTarget = true;

	$parentTaskId = ($fields['PARENT_ID'] ?? null) ? $fields['PARENT_ID'] : ($previousFields['PARENT_ID'] ?? null);

	if ($parentTaskId)
	{
		$itemService = new ItemService();

		$parentScrumItem = $itemService->getItemBySourceId($parentTaskId);
		if (!$parentScrumItem->isEmpty())
		{
			$taskService = new TaskService(UtilUser::getId());
			$entityService = new EntityService();

			$entity = $entityService->getEntityById($parentScrumItem->getEntityId());
			if (!$entity->isEmpty())
			{
				$parentTaskId = $parentScrumItem->getSourceId();

				$groupId = (int) $fields['GROUP_ID'];

				if ($entity->getGroupId() === $groupId)
				{
					$sort = count($taskService->getSubTasksInfo($groupId, [$parentTaskId])[$parentTaskId]);
					$sort = ($sort === 0 ? 1 : $sort);

					self::createItem(
						$entity,
						$taskId,
						$fields,
						$previousFields,
						$parentScrumItem->getEpicId(),
						$sort
					);

					$isBacklogTarget = false;
				}
			}
		}
	}

	if ($isBacklogTarget)
	{
		$backlogService = new BacklogService();

		$backlog = $backlogService->getBacklogByGroupId($fields['GROUP_ID']);
		if (!$backlog->isEmpty())
		{
			self::createItem($backlog, $taskId, $fields, $previousFields);
		}
	}
}