Добрый день.

Хотелось бы уточнить, можно ли как нибудь организовать процесс автоматической отправки отчета из планировщика заданий, т.е. из со стороны сервера.

Есть некий скрипт, который формирует отчет в FastReport, сохраняет его в виде файла .xls и автоматически отправляет его адресату.

Запихал данную функцию в планировщик заданий, Задание выполнилось без ошибок, но ничего не произошло. Может ли сервер построить отчет, сохранить его и отправить?

Вот хотелось бы запихать данную функцию в планировщик, а не помнить и нажимать кнопку ежедневно в нужное время и жить без данного ежедневного рутинного действия.

Реализовал данный процесс через планировщик Windows, но хотелось бы через планировщик Terrasoft.

Нравится

20 комментариев

Здравствуйте, Константин!
Уточните, пожалуйста, выполняются ли правильно другие скрипты планировщиком?
Нет ли в скрипте обращение к визуальным элементам?
Также даю ссылку на комментарий с прикрепленной информацией по планировщику, возможно найдете ответы там:
http://www.community.terrasoft.ru/forum/topic/10248#comment-46358

Да все хорошо выполняется. Строится FastReport и формируется Excel.
Уточнил про сервер, там нет office (из-за него видимо не формировался файл)и скорее всего не будет, поэтому все таки оставлю данный процесс на windows планировщике другого компьютера.

Все таки никак не получается, Может кто подскажет как настроить данный процесс чтобы он запускался в фоновом режиме работы компьютера? т.е. не в загруженном сеансе.
Процессы вроде бы запускаются, но нет письма(

Константин, а как Вы отправляете письмо?

Ещё можно так.

TempFileName - сформированный excel документ

function SendMail(TempFileName, Dataset){
	 AddressListing = new Array();
	 Address1 = 'Когут Константин' + ' <kogut@kodeks.ru>';
	 AddressListing.push(Address1);
	 SendTaskEmailToAction(AddressListing, TempFileName, Dataset);
}
 
function SendTaskEmailToAction(AddressList, TempFileName, Dataset) {
	var ID = Dataset.Values('ID');
	var TemplateID = GetSystemParameterValueEx('ContactMarketingActionReport');   // шаблон
	var Service = Services.GetSingleItemByUSI('scr_MailUtils');
	Service.ScriptControl.CodeObject.SendEmailByTemplate( TemplateID,
		{Attachments: [TempFileName], Dataset: Dataset, Address: AddressList, AutoSend: true, 
		SkipQueryAddresses: true, Silent: true});
}

Причем есть еще загвоздка, если выполнять windows планировщиком с 7ки, то все ок, а например с server 2003, то аналогичный запуск застревает на входном окне Terrasoft (ждет нажатия OK)

Константин, правильно ли я понял, что Вы по планировщику запускаете свое окно? Если да, то уточните, указываете ли Вы параметр "-pwd" при запуске?
Пробовали отправлять письма вручную (по нажатию на кнопку, например)?
Поставьте отладчик в функцию SendEmailByTemplate и посмотрите, где есть проблема.

В планировщике все указано, еще раз повторюсь, на 7ке все выполняется корректно, а на servere 2003 застревает на входе.

Но даже на 7ке не выполняется в фоновом режиме например при выходе из сеанса, при указании в планировщике от кого запустить задачу. Процессы появляются в диспетчере, но нет оправки

Константин, повторюсь. Проверяли ли Вы, работает ли код по отправке письма, если выполнять его не по планировщику, а привязать к кнопке, например?

Да по кнопке работает, даже по планировщику работает, но на 7ке, а на servere застревает на входе

Константин, предоставьте, пожалуйста, листинг .bat файла, который запускает Terrasoft.

"C:\Program Files\Terrasoft\Bin\TSClient.exe" /wnd=wnd_AutoReport -сfg="Terrasoft" -usr="Supervisor" -pwd="***"

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2014-02-06T13:19:24.8797741</Date>
    <Author>USO\kogut</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2014-02-06T10:20:23</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>USO\kogut</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>true</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\Program Files (x86)\Terrasoft\Bin\TSClient.exe"</Command>
      <Arguments>/wnd=wnd_AutoReport -cfg=Terrasoft -usr=Supervisor -pwd=***</Arguments>
    </Exec>
  </Actions>
</Task>

Константин, передал информацию в департамент разработки. Сообщу, когда будет ответ.

Ок, буду ждать

Добрый день, Константин!
Попробуйсте изменить строку запуска в командном файле на следующую:

start "TSClient" /d "C:\Program Files (x86)\Bin" TSClient.exe –wnd=wnd_AutoReport -cfg=Terrasoft -usr=Supervisor -pwd=***

При этом командный файл запуска должен быть не *.bat, а *.cmd.

Как изменить батник задачи?

Если просто создать батник и его запускать, то он игнорирует окно которое должно запуститься

Константин, Вы имеете ввиду задачу планировщика?
Как я писал выше, попробуйте создать *.cmd файл, а не *.bat.

да планировщика

Изменять параметры задачи можно, открыв окно "Свойства" из контекстного меню задачи.

все ок, проблема была как ни странно в "-wnd" у параметра wnd, вот рабочий cmd на windows servere

start "TSClient" /d "C:\Program Files\Terrasoft\Bin" TSClient.exe /wnd=wnd_AutoReport -cfg=Terrasoft -usr=Supervisor -pwd=*** 
Показать все комментарии