• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/monitor/history/history.php
  • Класс: BitrixTimemanMonitorHistoryHistory
  • Вызов: History::getForPeriod
static function getForPeriod(int $userId, Date $dateStart, Date $dateFinish): array
{
	$query = MonitorUserLogTable::query();

	$query->setSelect([
		'TYPE' => 'entity.TYPE',
		'TITLE' => 'entity.TITLE',
		'ENTITY_ID',
		'TIME_SPEND',
		'COMMENT' => 'monitor_comment.COMMENT',
		'ABSENCE_TIME_START' => 'absence.TIME_START'
	]);

	$query->registerRuntimeField(new ReferenceField(
		'entity',
		MonitorEntityTable::class,
		Join::on('this.ENTITY_ID', 'ref.ID')
	));

	$query->registerRuntimeField(new ReferenceField(
		'monitor_comment',
		MonitorCommentTable::class,
		Join::on('this.ID', 'ref.USER_LOG_ID')
			->whereColumn('this.USER_ID', 'USER_ID')
	));

	$query->registerRuntimeField(new ReferenceField(
		'absence',
		MonitorAbsenceTable::class,
		Join::on('this.ID', 'ref.USER_LOG_ID')
	));

	$query->addFilter('=USER_ID', $userId);
	$query->whereBetween('DATE_LOG', $dateStart, $dateFinish);

	$history = $query->exec()->fetchAll();

	foreach ($history as $index => $entity)
	{
		if ($entity['ABSENCE_TIME_START'])
		{
			$history[$index]['TITLE'] =
				$entity['TITLE']
				. ' '
				. Loc::getMessage('TIMEMAN_MONITOR_HISTORY_FROM_TIME')
				. ' '
				. DateTime::createFromUserTime($entity['ABSENCE_TIME_START'])->format('H:i')
			;
		}
	}

	return $history;
}