• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/bizproc/document/task.php
  • Класс: BitrixTasksIntegrationBizprocDocumentTask
  • Вызов: Task::convertFieldsToDocument
static function convertFieldsToDocument(array &$fields)
{
	$fields['IS_IMPORTANT'] = ($fields['PRIORITY'] > Priority::AVERAGE) ? 'Y' : 'N';

	$documentFields = self::getDocumentFields(null);
	foreach ($fields as $fieldName => $fieldValue)
	{
		if(($documentFields[$fieldName]['Type'] ?? null) === 'bool')
		{
			$fields[$fieldName] = self::resolveBoolType($fieldValue);
		}
	}

	//users
	foreach (['RESPONSIBLE_ID', 'CREATED_BY', 'CHANGED_BY', 'CLOSED_BY'] as $userKey)
	{
		$fields[$userKey] = $fields[$userKey] > 0 ?sprintf('user_%d', $fields[$userKey]) : null;
	}
	foreach ($fields['ACCOMPLICES'] as $i => $userId)
	{
		$fields['ACCOMPLICES'][$i] = sprintf('user_%d', $userId);
	}
	foreach ($fields['AUDITORS'] as $i => $userId)
	{
		$fields['AUDITORS'][$i] = sprintf('user_%d', $userId);
	}
	//$fields['TAGS'] - nothing to do.

	$fields['STATUS'] = $fields['REAL_STATUS'];
	$fields['IS_EXPIRED'] = 'N';
	if (!empty($fields['DEADLINE']))
	{
		$closedDateTs = time();
		if ($fields['STATUS'] >= Status::SUPPOSEDLY_COMPLETED && !empty($fields['CLOSED_DATE']))
		{
			$closedDateTs = DateTime::createFromUserTime($fields['CLOSED_DATE'])->getTimestamp();
		}

		$deadlineTs = DateTime::createFromUserTime($fields['DEADLINE'])->getTimestamp();
		if ($deadlineTs <= $closedDateTs)
		{
			$fields['IS_EXPIRED'] = 'Y';
		}
	}

	$fields['GROUP_ID_PRINTABLE'] = Loc::getMessage('TASKS_BP_DOCUMENT_GROUP_ID_PRINTABLE_DEFAULT');
	if ($fields['GROUP_ID'] > 0)
	{
		$fields['GROUP_ID_PRINTABLE'] = $fields['GROUP_ID'];
		if (MainLoader::includeModule('socialnetwork'))
		{
			$res = BitrixSocialnetworkWorkgroupTable::getList(
				['filter' => ['=ID' => $fields['GROUP_ID']], 'select' => ['NAME']]
			);
			if ($row = $res->fetch())
			{
				$fields['GROUP_ID_PRINTABLE'] = $row['NAME'];
			}
		}
	}
	else
	{
		$fields['GROUP_ID'] = null;
	}

	if ((int)$fields['PARENT_ID'] <= 0) // issue: 0155930
	{
		$fields['PARENT_ID'] = null;
	}

	if (is_array($fields['COMMENT_RESULT']))
	{
		$results = [];
		/** @var BitrixTasksInternalsTaskResultResult $result */
		foreach ($fields['COMMENT_RESULT'] as $result)
		{
			$results[] = htmlspecialcharsback($result->getText()); //$result->getFormattedText();
		}

		$fields['COMMENT_RESULT'] = array_reverse($results);
		unset($results, $result);
	}

	if (is_array($fields['COMMENT_RESULT_LAST']))
	{
		$fields['COMMENT_RESULT_LAST'] = htmlspecialcharsback($fields['COMMENT_RESULT_LAST']['TEXT']);
	}
}