Дано:
есть корпортал, на котором присутствует "просроченный" рабочий день - то есть, начат ранее, чем текущая дата
Требуется:
из помощи внешнего приложения осуществить закрытие рабочего дня тем числом, которым он был открыт, и временем 19:00
Проблему авторизации стороннего приложения на портале в данном посте не рассматриваем
Решение
реализуется при помощи кода:
if (CModule::IncludeModule('timeman')) { $TMUSER = new CTimeManUser($USER_ID); $state = $TMUSER->State(); if ($state == 'EXPIRED') { $USER->Authorize($USER_ID); $last_entry = CTimeManEntry::GetLast($USER_ID); $timestamp = ConvertTimeStamp(MakeTimeStamp($last_entry['DATE_START'], FORMAT_DATETIME), 'SHORT'); $tmstp = MakeTimeStamp($timestamp." 19:00:00", FORMAT_DATETIME); $TMUSER->CloseDay($tmstp, "my report", false); } } |
if (CModule::IncludeModule('timeman')) |
$TMUSER = new CTimeManUser($USER_ID); |
$state = $TMUSER->State(); |
if ($state == 'EXPIRED') |
$last_entry = CTimeManEntry::GetLast($USER_ID); |
$timestamp = ConvertTimeStamp(MakeTimeStamp($last_entry['DATE_START'], FORMAT_DATETIME), 'SHORT'); |
В переменную $timestamp выдергиваем только дату, без времени при помощи формата "SHORT"
$tmstp = MakeTimeStamp($timestamp." 19:00:00", FORMAT_DATETIME); |
$TMUSER->CloseDay($tmstp, "my report", false); |
$tmstp - сформированная дата+время закрытия рабочего дня
"my report" - произвольный текстовый комментарий, обязателен для просроченных рабочих дней
false - необходимо, чтобы команда сработала без присутствия пользователя на портале в явном виде