• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task/result/resultmanager.php
  • Класс: BitrixTasksInternalsTaskResultResultManager
  • Вызов: ResultManager::createFromComment
public function createFromComment(int $commentId, bool $checkServiceData = true): ?Result
{
	$comment = $this->loadComment($commentId);
	if (
		!$comment
		|| (int) $comment->getServiceType() === 1
	)
	{
		return null;
	}

	if (
		$checkServiceData
		&& $comment->getServiceData() !== self::COMMENT_SERVICE_DATA
	)
	{
		return null;
	}
	else if (
		!$checkServiceData
		&& $comment->getServiceData() !== self::COMMENT_SERVICE_DATA
	)
	{
		$comment->setServiceData(self::COMMENT_SERVICE_DATA);
		$comment->save();
	}

	$taskId = (int) str_replace('TASK_', '', $comment->getXmlId());

	$task = $this->loadTask($taskId);
	if (!$task)
	{
		return null;
	}

	$result = new Result();
	$result->setTaskId($taskId);
	$result->setCommentId($commentId);
	$result->setCreatedBy($this->userId);
	$result->setCreatedAt($comment->getPostDate());
	$result->setText($comment->getPostMessage());
	$result->setUpdatedAt($comment->getPostDate());

	if (in_array((int)$task->getStatus(), [Status::COMPLETED,Status::SUPPOSEDLY_COMPLETED], true))
	{
		$result->setStatus(ResultTable::STATUS_CLOSED);
	}
	else
	{
		$result->setStatus(ResultTable::STATUS_OPENED);
	}

	$result->save();

	$this->updateUf($result, $commentId);

	$this->sendPush(self::COMMAND_CREATE, $result);
	$this->log($result, self::RESULT_ADD);
	$this->executeAutomationTrigger($task, $result);
	$this->sendTimelineEvent($task);

	return $result;
}