Скрипт задачи планировщика

Описание скрипта

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

Место настройки скрипта

Форма добавления задачи планировщика типа "Скрипт", см. Добавление задачи планировщика типа "Скрипт".

Когда выполняется скрипт

Каждый раз при наступлении времени запуска задачи планировщика.

Результат выполнения скрипта

Возвращаемого значения нет.

Переменные и их значения

Глобальные переменные:

  • user — пользователь, инициализировавший событие. Является объектом класса "Сотрудник" (employee). Если событие инициализировал суперпользователь, то user=null.
  • ip — ip-адрес рабочего места пользователя user. Если действие выполняется автоматически системой (а не пользователем), то переменная не определяется.
  • appVersion — версия приложения.
  • api — используется для обращения к методам api, например api.utils, api.ldap, api.timing, см. Методы API;
  • modules — используется для обращения к скриптовому модулю и конкретному методу, определенному в нем, с помощью конструкции: modules.{код модуля}.{имя метода}({параметры метода}...), см. Скрипт текста модуля;
  • logger — используется для отладки скриптов и позволяет вывести в лог на указанный уровень переданную строку, см. Оформление и отладка скриптов.
  • utils — синоним api.utils.

Переменные контекста:

  • currentTaskInfo — информация о текущей задаче планировщика.
    • currentTaskInfo.getCode() — UUID задачи планировщика
    • currentTaskInfo.getTitle() — название задачи планировщика
    • currentTaskInfo.getDescription() — описание задачи планировщика
    • currentTaskInfo.getLastExecutionDate() — дата последнего выполнения задачи планировщика
    • currentTaskInfo.getPlanDate() — дата следующего запуска задачи планировщика
    • currentTaskInfo.getTrigger() — правила выполнения задачи планировщика
    • currentTaskInfo.getTrigger(triggerCode) — правила выполнения задачи планировщика по коду правила

Особенности скрипта

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

Примеры скрипта

1. Ежедневная отправка отчетов по почте:

//Код шаблона отчета
def TEMPLATE_CODE = 'templCode'; 
def REPORT_PARAMS = ['DateFrom' : new Date()-1, 'DateTo': new Date()]
//UUID объекта, относительно которого строится отчет
def SUBJECT_UUID = 'root$101'; 
//формат, в котором отправлять отчет (pdf, xls, htmlZip, csv)
def REPORT_FORMAT = 'pdf'; 
def message = api.mail.sender.createMail()
message.addTo('Имя получателя №1', 'address1@mail.com')
message.contentType = 'text/html'
message.setSubject('Тема письма')
//Прикрепление файла с отчетом к письму
message.setText('Тело письма')
// получаем источник данных для объекта file
def source =  api.reports.getReportDataSource(TEMPLATE_CODE, SUBJECT_UUID, REPORT_PARAMS, REPORT_FORMAT);
def fileTitle = templateTitle + ' - от ' + utils.formatters.formatDate(new Date())+'.'
fileTitle = fileTitle + (REPORT_FORMAT == 'htmlZip' ? 'zip' : REPORT_FORMAT)
message.attachFile(source, fileTitle)
api.mail.sender.sendMail(message)