• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/recyclebin/task.php
  • Класс: BitrixTasksIntegrationRecyclebinTask
  • Вызов: Task::collectAdditionalData
static function collectAdditionalData($taskId)
	{
		$data = [];

		$task = TaskTable::getByPrimary(
			$taskId,
			[
				'select' => ['*', 'UF_*']
			]
		);

		$tags = TaskTagTable::getList([
			'select' => [
				'TAG_ID',
			],
			'filter' => [
				'TASK_ID' => $taskId,
			],
		])->fetchAll();

		$tagIds = array_map(static function (array $el): int {
			return (int)$el['TAG_ID'];
		}, $tags);

		$res = $task->fetchObject();

		if ($res)
		{
			$data['TASK'] = $res->toArray();
			$data['TAGS'] = $tagIds;
		}

		// Scenario
		$scenarios = ScenarioTable::getList([
			'select' => ['SCENARIO'],
			'filter' => [
				'=TASK_ID' => $taskId,
			],
		])->fetchAll();
		foreach ($scenarios as $row)
		{
			$data['SCENARIO'][] = $row['SCENARIO'];
		}

		$res = TaskStageTable::getList(['filter' => ['TASK_ID' => $taskId], 'select' => ['STAGE_ID']]);
		while ($row = $res->fetch())
		{
			$data['STAGES'][] = $row;
		}

		$res = CTaskMembers::GetList([], ['TASK_ID' => $taskId, 'TYPE' => ['O', 'R', 'A', 'U']]);
		while ($row = $res->Fetch())
		{
			$data['MEMBERS'][] = [
				'USER_ID' => $row['USER_ID'],
				'TYPE' => $row['TYPE']
			];
		}

		$res = CTaskDependence::GetList([], ['TASK_ID' => $taskId]);
		while ($row = $res->Fetch())
		{
			$data['DEPENDENCE_TASK'][] = [
				'DEPENDS_ON_ID' => $row['DEPENDS_ON_ID']
			];
		}

		$res = CTaskDependence::GetList([], ['DEPENDS_ON_ID' => $taskId]);
		while ($row = $res->Fetch())
		{
			$data['DEPENDENCE_ON'][] = [
				'TASK_ID' => $row['TASK_ID']
			];
		}

		$res = CTaskReminders::GetList([], ['TASK_ID' => $taskId]);
		while ($row = $res->Fetch())
		{
			$data['REMINDERS'][] = $row;
		}

		$res = CTaskTemplates::GetList([], ['TASK_ID' => $taskId], [], [], ['ID']);
		while ($row = $res->Fetch())
		{
			$data['TEMPLATES'][] = $row['ID'];
		}

		$tree = Dependence::getSubTree($taskId);
		$subtasks = $tree->find(['__PARENT_ID' => $taskId])->getData();

		$subtaskIds = [];
		foreach ($subtasks as $relations)
		{
			$id = (int)$relations['__ID'];
			if ($id > 0)
			{
				$subtaskIds[] = $id;
			}
		}

		$data['SUBTASK_IDS'] = array_unique($subtaskIds);

		if (CModule::IncludeModule('crm'))
		{
			$needActivityFields = [
				'OWNER_ID',
				'OWNER_TYPE_ID',
				'TYPE_ID',
				'PROVIDER_ID',
				'PROVIDER_TYPE_ID',
				'PROVIDER_GROUP_ID',
				'CALENDAR_EVENT_ID',
				'PARENT_ID',
				'THREAD_ID',
				'ASSOCIATED_ENTITY_ID',
				'SUBJECT',
				'CREATED',
				'LAST_UPDATED',
				'START_TIME',
				'END_TIME',
				'DEADLINE',
				'COMPLETED',
				'STATUS',
				'RESPONSIBLE_ID',
				'PRIORITY',
				'NOTIFY_TYPE',
				'NOTIFY_VALUE',
				'DESCRIPTION',
				'DESCRIPTION_TYPE',
				'ORIGINATOR_ID'
			];

			$res = CCrmActivity::GetList([], [
				'TYPE_ID' => CCrmActivityType::Task,
				'ASSOCIATED_ENTITY_ID' => $taskId
			]);

			while ($a = $res->Fetch())
			{
				$activity = [];
				foreach ($needActivityFields as $fieldCode)
				{
					$activity[$fieldCode] = $a[$fieldCode];
				}

				$data['ACTIVITIES'][] = $activity;
			}
		}
		return $data;
	}