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;
}