- Модуль: 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);
}