Если нужно получить в агенте дату, для которого он запущен, можно в функции агента найти дату его следующего запуска.
Например:
[CODE]
CAgent::AddAgent(
"CTimeSystem::UpdateStatistic();", // имя функции
"timesystem", // идентификатор модуля
"Y", // агент критичен к кол-ву запусков
86400, // интервал запуска
"", // когда проверить первый запуск? (сейчас)
"Y", // агент активен
date("01.03.2009") // начиная с какой даты проверять?
);
[/CODE]
Допустим, сегодня 17-ое марта. Агент должен запуститься ровно 17 раз, так как с 1-го марта прошло 17 дней.
Чтобы получить в агенте дату, для которой он каждый раз срабатывал, можно делать так:
[CODE]
function UpdateStatistic()
{
$curr_date = "";
// Находим дату, для которой запущен данный агент
$arFilter = array(
"NAME" => "CTimeSystem::UpdateStatistic();",
);
$curr_agent = CAgent::GetList(array(), $arFilter);
if ($curr_agent = $curr_agent->GetNext())
$curr_date = ConvertTimeStamp(MakeTimeStamp($curr_agent["NEXT_EXEC"]), "SHORT");
// Добавляем смены на сегодня
CTimeSystemBusiness::FillSmenaTime($curr_date);
// Обновляем статистику за вчера
CTimeSystemBusiness::AddToStatByDay( ConvertTimeStamp($curr_date - 86400) );
// AddMessage2Log("Занятость механиков за ".ConvertTimeStamp(time() - 86400)." обновлена.", "timesystem");
return 'CTimeSystem::UpdateStatistic();';
}
[/CODE]
Еще один вариант - передавать параметр в агенте
[CODE]CTimeSystem::UpdateStatistic('01.03.2009'); [/CODE]
и в return подставлять следующий день
[CODE]
return 'CTimeSystem::UpdateStatistic('02.03.2009');';
[/CODE]