• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasks_report_helper.php
  • Класс: CTasksReportHelper
  • Вызов: CTasksReportHelper::setRuntimeFields
static function setRuntimeFields(BitrixMainEntityBase $entity, $sqlTimeInterval)
{
	$connection = MainApplication::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$entity->addField(array( // in minutes (deprecated, use TIME_SPENT_IN_LOGS_FOR_PERIOD, which is in seconds, that works correctly in expressions)
		'data_type' => 'integer',
		'expression' => array(
			'ROUND((SELECT  SUM(CASE WHEN '.$sqlHelper->getDatetimeToDateFunction('CREATED_DATE').' '.
				$sqlTimeInterval.' THEN SECONDS ELSE 0 END)/60 FROM b_tasks_elapsed_time WHERE TASK_ID = %s),0)',
			'ID'
		)
	), 'DURATION_FOR_PERIOD');

	$entity->addField(array( // in seconds
		'data_type' => 'integer',
		'expression' => array(
			'(SELECT  SUM(CASE WHEN '.$sqlHelper->getDatetimeToDateFunction('CREATED_DATE').' '.$sqlTimeInterval.
				' THEN SECONDS ELSE 0 END) '.
			'FROM b_tasks_elapsed_time WHERE TASK_ID = %s)',
			'ID'
		)
	), 'TIME_SPENT_IN_LOGS_FOR_PERIOD');

	$entity->addField(array(
		'data_type' => 'boolean',
		'expression' => array(
			'CASE WHEN %s '.$sqlTimeInterval.' THEN 1 ELSE 0 END',
			'CREATED_DATE'
		),
		'values' => array(0, 1)
	), 'IS_NEW');

	$entity->addField(array(
		'data_type' => 'boolean',
		'expression' => array(
			'CASE WHEN %s '.$sqlTimeInterval.' THEN 0 ELSE 1 END',
			'DATE_START'
		),
		'values' => array(0, 1)
	), 'IS_OPEN');

	$entity->addField(array(
		'data_type' => 'boolean',
		'expression' => array(
			'CASE WHEN %s '.$sqlTimeInterval.' AND %s IS NOT NULL THEN 1 ELSE 0 END',
			'CLOSED_DATE', 'CLOSED_DATE'
		),
		'values' => array(0, 1)
	), 'IS_FINISHED');

	$entity->addField(array(
		'data_type' => 'string',
		'expression' => array(
			'GROUP_CONCAT(DISTINCT (%s) ORDER BY (%s) SEPARATOR ' / ')',
			LabelTable::getTaskRelationName() . ':TASK.TAG.NAME',
			LabelTable::getTaskRelationName() . ':TASK.TAG.NAME',
		),
	), 'TAGS');

	self::appendBooleanUserFieldsIfNull($entity);
	self::appendDateTimeUserFieldsAsShort($entity);
	self::appendMoneyUserFieldsAsSeparated($entity);
	self::appendTextUserFieldsAsTrimmed($entity);
}