Добрый день.

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

Есть некий скрипт, который формирует отчет в 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=*** 
Показать все комментарии

С помощью планировщика заданий настроил запуск экспорта в 1С заказа поставщику (утилита синхронизации, функция ExportObject). В этой функции установил точку останова для отладчика (debugger). Планировщиком функция вызывается и возникает окно выбора отладчика, выбираю MS Visual Studio и появляется пустое окно отладчика.

Кто знает как мне отладить с помощью дебагера скрипт функции (хочу увидеть передаваемые в нее параметры)?

TS XRM 3.4.1
Win XP SP3

Нравится

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

Здравствуйте, Андрей!
Если вариант Дмитрия Вам не подходит, то проверьте, подсоединен ли Visual Studio к процессу. Также прошу предоставить скриншот, иллюстрирующий проблему.

Дмитрий, спасибо за ссылку.
Проверил из клиента Террасофт - скрипт отрабатывает нормально, а вот при вызове через планировщик заданий - не отрабатывает корректно. Мне все-таки нужно каким-то образом отладить именно выполнение скрипта самим планировщиком заданий.

Андрей, здравствуйте.
Начнем с простого. Создал тестовый пример, вот настройки:
Параметры задания

Параметры функции скрипта

Служба планировщика заданий запущена:
Служба

По полю "Последний запуск" видно, что задание планировщиком запускается:
Признаки

А в реальности никакого диалогового окна не появляется. Как добиться его появления? Как отлаживать такую ситуацию?

TS XRM 3.4.1
Win XP SP3

Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода:

"Андрей Каспаревич" написал:Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода

Попробовал - в таком случае отладка вообще не возникает.
Андрей, у вас получилось отработать корректно то тестовое плановое задание, которое я привел в пример?

а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Андрей, не проверял. Но уточнил информацию по поводу взаимодействия с графическими элементами.
Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.
Прикрепляю полезную информацию по поводу планировщика.
faq.docx
nastroyka_planirovshchika_zadaniy_3.4.docx
tsmailsystem.zip

"Андросов Дмитрий" написал:а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Такого процесса в списке доступных процессов для подключения я не нахожу.

"Андрей Каспаревич" написал:Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.

Такие моменты лучше описывать в документации. Спасибо за документацию, сейчас посмотрю.

Но, все таки, можно каким-то образом выполнить отладку выполняемого шага планировщика заданий?

Андрей, завтра проведем тестирование и по результату Вам сообщим.

Андрей, извиняюсь за дезинформацию. Код, выполняемый планировщиком задач нельзя отладить.

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

Показать все комментарии