Планировщик задач
Планировщик предназначен для выполнения определенных задач по расписанию или событию. Типовые задачи: формирование пакетных отчетов, рассылка электронных писем (отчетов), прием документов из электронных писем, резервное копирование баз данных и т.п.
Cкачать дистрибутив службы планировщика, актуальной для соответствующей версии базы данных, можно по ссылке : https://keysystems.ru/files/web/INSTALL/SMART2/install/TaskSchedulerService/ .
Планировщик может быть запущен/настроен локально либо удаленно - для выбора настраиваемого планировщика используется кнопка "Выбрать расположение планировщика" :
-
в текущем процессе (по умолчанию) - т.е. в составе программы и для работы планировщика должен быть запущен "Бюджет-СМАРТ". Создавать задачи в локальном планировщике (в текущем процессе "Бюджет-СМАРТ") могут любые пользователи. Соответственно, все задачи выполняются на базе от имени логина, вошедшего в комплекс (создавшего задачи).
-
как служба windows - указывается сетевой путь к компьютеру, где установлен планировщик как отдельная служба. В этом случае для выполнения задач программа "Бюджет-СМАРТ" не требуется. Сама служба устанавливается из дистрибутива (файл вида \BudgetSmart\install\TaskSchedulerServiceSvc.SetupBudget_....msi ) на соответствующем компьютере. Для работы со службой с другого компьютера, на компьютере где установлен планировщик должен быть открыт порт 5013 (по умолчанию).
С версии комплекса 23.2 для планировщика "как служба" требуется .NET Core 3.1 (Linux, Windows), иначе служба не запустится.
Для подключения к планировщику "как служба" используется протокол http, порт по умолчанию 5013 : http://<адрес или имя сервера>:5013 .
Файл конфигурация планировщика "как служба" под Windows находится по пути C:\Program Files (x86)\Keysystems\TaskSchedulerService\appsettings.json .Пример подключения на том же компьютере где запущена служба планировщика: http://localhost:5013 , логин admin и пароль 1 . Логин и пароль задаются в файле конфигурации планировщика "как служба" appsettings.json :
"IdentityUsers": [
{
"Role": "Admin",
"Login": "admin",
"Password": "1"
}
]Создавать задачи в планировщике, размещенном как отдельная служба, могут только пользователи с правами администратора.
**Учетная запись Windows** По умолчанию служба планировщика, будучи службой Windows, запускается от имени системной учетной записи Windows (Local system), которая не является доменной учетной записью и может не иметь необходимых прав доступа для нормальной работы. Рекомендуем запускать службу от имени какой-либо доменной учетной записи (например, для получения доступа к сетевым папкам домена). **Учетная запись "Бюджет-СМАРТ"** На какой базе выполняется задача планировщика и от имени какого пользователя задача подключается к SQL серверу (базе данных) можно глянуть по кнопке "Сменить источник данных" (кнопка присутствует только для задач планировщика как служба). По умолчанию - это пользователь, создавший задачу. **Сертификаты** Если служба планировщика при отработке задач использует сертификаты для создания защищенного канала, то эти сертификаты должны быть установлены в доверенные корневые центры в хранилище "Локальный компьютер". Например, для взаимодействия с ЕИС требуется сертификат минцифры.
-
удаленно, подключение через сервис приложений - указывается http адрес сервиса приложений "Бюджет-СМАРТ". Это способ управления планировщиком, запущенном в другой сети, и доступ к нему возможен только через веб-сервис приложения.
В файле конфигурации сервиса приложений нужно указать адрес подключения к планировщику, например <add Key="TaskSchedulerService" Value="http://127.0.0.1:5013" /> .
При подключении к планировщику будет запрошен логин и пароль, который задан в файле TaskSchedulerService.config, расположенном в каталоге удаленной службы, см параметры: AuthorizationAccountLogin и AuthorizationAccountPassword .
Текущее расположение просматриваемых задач можно определить по заголовку окна списка задач: если перед текстом "Планировщик задач" ничего нет, то просматривается список локальных задач , иначе просматривается список задач на удаленном компьютере (как служба) и в заголовке отображается адрес этого удаленного компьютера.
Кнопка "Запуск вручную" всегда запускает задачу в текущем процессе экземпляра "Бюджет-СМАРТ", как служба задача работает только по расписанию.
Лог работы планировщика хранится в виде txt файла с именем содержащим дату logГГГГММДД.txt (где ГГГГ - год, ММ - месяц, ДД - число месяца) и расположен по пути:
- для планировщика в виде службы - C:\Program Files (x86)\Keysystems\TaskSchedulerService\Logs\ .
- для планировщика в текущем процессе ПК "Бюджет-СМАРТ" - в логе клиентской части программы, а именно <рабочая папка комплекса>\Logs\ . Начало выполнения задачи планировщика в логе обозначается строкой «Запуск задачи 'OPENTASKSCHEDULER'» .
На каждый день создается отдельный файл лога.
Для включения логирования в файле конфигурации appsettings.json задать полный путь к лог-файлу в параметре "path", затем перезапустить Планировщик.
Пример:
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "c:/Program Files(x86)/Keysystems/TaskSchedulerService/logs/log_.txt",
"rollingInterval": "Day"
}
}
]
},
События планировщика (успешное завершение, сбой и т.п.) доводятся по внутренней почте до пользователей, указанных в настройке "Адресаты системных сообщений".
Использование прокси-сервера
Для некоторых задач требуется выход в интернет (например при обновлении Справочника БИК): планировщиком используется прокси указанный для комплекса в окне входа.
Если подключение к интернету осуществляется через прокси, то параметры прокси-сервера следует указывать:
- для задач, запущенных в текущем процессе "Бюджет-СМАРТ" - на вкладке "Соединение" окна входа в комплекс.
-
для задач, запущенных как служба Windows - в файле конфигурации TaskSchedulerService.config службы планировщика, который находится в каталоге службы планировщика. В нем необходимо заполнить соответствующий раздел:
<add Key="UseProxy" Value="true" />
<add Key="UseDefaultProxy" Value="false" />
<add Key="ProxyServer" Value="https://proxy:port" />
<add Key="ProxyLogin" Value="" />
<add Key="ProxyPassword" Value="" />Уведомление о результате выполнения задачи
Для некоторых типов задач результат их выполнения (успех или ошибка) рассылается пользователям, указанным в настройке "Меню Настройки: НАСТРОЙКИ \ Сервер сообщений \ Адресаты сообщений - настройка - Адресаты системных сообщений".
Это такие задачи как:
- Загрузка справочника банков.
- Загрузка курса валют с сайта ЦБ.
- Задача сервера.
Задачи
Загрузка справочника банков
Требования для успешного обновления справочника банков: версия службы планировщика не ниже 2.20.2.2981 (инсталлятор см в дистрибутиве клиентской части "Бюджет-СМАРТ").
Предназначена для автоматического обновления Справочника БИК по расписанию с сайта Банка России. Для этого:
- Создать задачу «Загрузка справочника банков».
- Далее на вкладке «Параметры» указать папку, куда будут складываться скачиваемые обновления действующих банков.
-
Далее на вкладке «Триггеры» задать расписание автоматического обновления (выполнения задачи).
В задаче по обновлению справочника банков указывается "Базовый адрес обновлений справочника" - по умолчанию https://cbr.ru/PSystem/payment_system/ (с мая 2023г) . Скачиваются и обрабатываются xml файлы с тэгом ed807.
Примечание. Если задача выполняется в текущем процессе "Бюджет-СМАРТ" и подключение к интернету осуществляется через прокси, то параметры прокси-сервера следует указывать на вкладке "Соединение" окна входа в комплекс.
При удачном завершении очередной загрузки на вкладке "Журнал событий" задачи будет результат в виде
"Выполнено успешно: Загрузка справочника из файла: C:\...\....zip. Загружено банков: ...". Любые другие сообщения говорят о каких-то проблемах - подробностьи см в протоколе приема справочника БИК в режиме "Навигатор: СЕРВИСНЫЕ РЕЖИМЫ \ Журнал событий".
Для просмотра протокола загрузки следует открыть детализацию на вкладке "Журнала событий" в задаче планировщика.
Задача приема файлов по email (выписки, ФНС, платежки и т.п.).
Решается последовательно двумя типами задач:
1) Проверка внешнего почтового ящика.
С заданной периодичностью проверяет внешний почтовый ящик и загружает файлы из входящих сообщений в заданную папку. Обработанные почтовые сообщения удаляются из входящих.
2) Импорт документов (ЭОД).
Осуществляет прием файлов из определенной папки (которую пополняет первая задача по проверке почтового ящика). Обработанные файлы не удаляются и не перемещаются. Работает задача не по расписанию, а по факту появления файла приема в заданной папке.
Для некоторых ведомостей важен порядок приема набора файлов, либо требуется обеспечить их "одновременный" прием в одной сессии (тогда комплекс сам определит нужный порядок приема). Поэтому рекомендуем ведомости/выписки принимать по файлу с описанием (см далее).
Рекомендуемые настройки для приема отдельных документов (платежки, заявки и т.п.)
Параметры задачи:
- Приоритетный вид импортируемых документов = Черновик,
- Принимать по файлу с описанием = ОТКЛ.
Триггера задачи:
- Выберите директорию для просмотра - указать папку, в которйо будут расположены файлы приема.
- Отслеживать изменения = Создание файла.
- Использовать маску файла = *.pp? (указать маску обрабатываемых файлов). Показан пример для платежных поручений. Примеры масок для: расходных расписаний *.ap? , ФНС tax*.rar (либо tax*.txt) , заявок на кассовый расход *.zr? . Можно указать несколько масок через запятую: *.ap?,*.zr? .
Рекомендуемые настройки для приема выписок
Параметры задачи:
- Приоритетный вид импортируемых документов = Беловик,
- Принимать по файлу с описанием = ВКЛ (обеспечивает автоматически правильный порядок обработки файлов - комплекс сам из совокупности указанных файлов решает в какой последовательности их загрузить).
- Маска файла = ссо_по_27.xlm - произвольное имя файла описания в формате xml. Пример содержимого файла для приема Справки о свободном остатке (ССО):
<?xml version="1.0" encoding="utf-8"?>
<Root>
<upload>
<code>98ac9f51-ea1a-df11-a3dc-16c03228c478</code>
<file>00001700.se7</file>
<file>00001704.se7</file>
<file>00242K00.rk7</file>
<file>00242K04.rk7</file>
</upload>
</Root>
где 98ac9f51-ea1a-df11-a3dc-16c03228c478 - уникальный идентификатор сеанса приема, для каждого файла описания свой (например поле GUID из одного из файлов RK). Далее в тегах <file> перечислены имена файлов приема в нужном порядке.
Расписание (триггеры) задачи:
- Выберите директорию для просмотра - указать папку, в которой будут расположены файлы приема и файл описание (xml). При этом файл описание нужно располагать в этой папке последним, когда все нужные файлы приема уже вналичии.
- Отслеживать изменения = Создание файла. планировщик будет ожидать появления файла описания (xml).
- Использовать маску файла = пусто.
Примечание. Если не применять файл описания, то:
- в поле "Использовать маску файла" следует задавать только имена файлов выписок, без приложений (например правильно *.vb? , и неправильно *.vb?,*.bd?,*.bh? ). Важно: файл выписки (vb, vq и т.п.) должен быть размещен в папке приема последним, после размещения файлов приложений (bd, bh, sp).
- для приема ССО следует создать отдельные задачи: в первой задаче прием справки об операциях (se), во второй - справки об остатках (rk), при чём первая задача должна стартовать раньше второй на несколько (1-5) минут.
Выгрузка отчетов.
Выписки формируются с задержкой на 1-5 дней (см параметр "Смещение дней") - время, необходимое для полной обработки дня специалистами финоргана.
Тип задачи "Пакетная выгрузка отчетов".
В параметрах задачи следует:
- в табличной части выбрать нужные пакетные отчеты: предлагаются пакетные отчеты (из папки навигатора "ОТЧЕТЫ \ ПАКЕТЫ ОТЧЕТОВ"), которые пользователь, создающий задачу, хотя бы раз применял.
- указать местоположение полученных отчетов: сервис первичных документов (т.е. сохраненные отчеты), либо в папку на диске компьютера, а так же задать отправку по email (используется справочник "Корреспонденты. Участники рассылок").
- задать смещение дней - смещение даты конца периода отчетов в прошлое относительно расчетной даты, с целью формирования актуальных выписок (только по закрытым дням), с учетом справочника "Нерабочие дни".
Примечание. Для того же пользователя, от имени которого будет выполняться задача формирования отчетов, рекомендуем создавать задачу "Синхронизация расчетной даты" - чтоб расчетная дата комплекса, относительно которой обычно формируется отчетность, для этого пользователя совпадала с системной датой SQL сервера. Предварительное (до выгрузки отчетов) выполнение этой задачи позволит гарантировать формирование отчетов за нужный период. См. так же параметр "Смещение дней" задачи "Пакетная выгрузка отчетов".
Рассылка файлов по почте.
Тип задачи "Отправка файла по почте".
В параметрах задачи в поле "Сообщение" можно применить переменные:
- %ATTACH - названия прикрепленных файлов,
- %DATE - дата создания письма,
- %TIMELONG - время создания письма.
Задача отслеживает изменения файловой системы (появление новых файлов, см вкладку "Триггеры") и при появлении в заданной папке новых файлов рассылает письма с этими файлами. Файлы должны содержаить в своём имени идентификтор получателя (счет, ИНН и т.п.) заданный в справочнике "Корреспонденты. Участники рассылок". Если источником корреспондентов задан файл Recipients.txt (список получателей, все адреса пишутся с новой строки), то все файлы будут отправляться по каждому из адресов только из этого файла.
Задача отправки файла по почте не поддерживает ручной запуск (предполагает мгновенное выполнение, а файл отправки неизвестен), поэтому в этом случае пишет про отсутствии файла для отправки.
Системная задача "Синхронизация расчетной даты".
Предназначена для актуализации расчетной даты комплекса. Для успешного выполнения задачи требуется включение настройки на пользователя "Меню Настройки: НАСТРОЙКИ \ Даты \ Изменять расчетную дату каждый день".
Принцип действия для ПК "Бюджет-СМАРТ":
- если компьютер пользователя не выключается на ночь, то в полночь 00:00:00 задача меняет расчетную дату комплекса в соответствии с календарной датой на компьютере пользователя, и прописывает новую дату в настройке на пользователя "Меню Настройки: НАСТРОЙКИ \ Даты \ Расчетная дата".
- при запуске "Бюджет-СМАРТ" эта же задача проверяет расчетную дату комплекса на соответствие календарной дате на компьютере пользователя, при расхождении меняет расчетную дату и прописывает новое значение в настройке на пользователя "Меню Настройки: НАСТРОЙКИ \ Даты \ Расчетная дата".
Если SQL сервер по каким-либо причинам недоступен для сохранения значения расчетной даты, то возникнут коллизии: для пользователя расчетная дата будет отображаться одна, а применяться другая (из настройки).
Для "Бюджет-НЕКСТ" используется (сравнивается) дата на компьютере, где развернут сервер приложений.
Формирование справочника БК
Предназначена для обновления справочника "БК (расходы)" по данным документов.
Загрузка открытых данных
Задача по загрузке открытых данных из ЭБ. Используется API сервис ЭБ: от "Бюджет-СМАРТ" формируется и отправляется в ЭБ запрос на предоставление данных - ЭБ формирует набор данных согласно указанного в запросе фильтра и возвращает данные в "Бюджет-СМАРТ" .
В разделе "Параметры" планировщика можно выбрать следующие документы для загрузки:
-
Сводный реестр (163н) - задача предназначена для обновления справочника "Сводный реестр 163н". В задаче нужно указать фильтр, согласно которого будут запрошены данные в ЭБ:
- Код субъекта - указывается кодовое обозначение субъекта Российской Федерации, по учреждениям которого запрашивается сводный реестр, установленное в соответствии с федеративным устройством Российской Федерации, определенным статьей 65 Конституции Российской Федерации, в целях ведения ЕГРЮЛ, в соответствии со сведениями ЕГРЮЛ.
- Код уполномоченной организации - указывается код по сводному реестру (код УБП) организации, уполномоченной предоставлять документы по сводному реестру в ОрФК, т.е. код УБП финоргана бюджета, по учреждениям которого запрашивается сводный реестр.
- Параметры фильтра учитываются по условию И (AND), необязательно указывать все параметры.
-
Корреспонденты (все) - обновляет/добавляет данные по ИНН из Сводного реестра 163н.
-
ОКТМО - Общероссийский классификатор территорий муниципальных образований(7710568760-OKTMO).
Загрузка данных с внешних сервисов
Тип задачи "Загрузка данных с внешних сервисов (ЭБ, ЕСИА, ФНС и т.п.)".
Запрашивает данные с внешних сервисов, таких как ЭБ, ЕСИА, ФНС и т.п. по HTTP протоколу. Результат запроса загружается в соответствующий раздел комплекса (документы, справочники и т.п.) либо обновляет статусы документов по результатам полученных ответов на запросы.
В параметрах задачи в поле "Документ" следует выбрать документ/справочник который требуется загрузить с внешнего ресурса (сайт ЭБ, сайт ФНС и т.п.). Примеры возможных значений:
-
Машиночитаемая доверенность - в зависимости от протокола:
-
Машиночитаемая доверенность (данные от сервиса) - запросы на сайта ФНС об актуальности МЧД. Расписание задачи рекомендуется задавать так, чтоб она выполнялась через несколько минут после задачи по обновлению ключа API. Задача отправляет запросы актуальности для документов МЧД, имеющих статус "Зарегистрирован в реестре" и меняет дату актуальности либо статус МЧД в соответствии с ответом сервиса ФНС.
-
Машиночитаемая доверенность, обновление ключа API (данные от сервиса) - обновление ключа API для обращения к сервисам ФНС. Задачу по обновлению ключа API следует создать две (для одной и той же базы данных), по техническим причинам. Выполняться обе задачи должны раз в сутки, с интервалом выполнения (расписанием) 1-5 минут друг за другом.
-
-
Проверка платежных данных в ЕИС - задача по опросу сервиса ЕИС для получения ответа на запрос о проведении проверки платежных документов по оплате контрактов, ранее отправленный в рамках бизнес процесса "Контроль совершения казначейских платежей с ЕИС" .
Задача сервера
Произвольная процедура/команда СУБД сервера. Доступен справочник типовых процедур:
- Окончательное удаление безопасно удаленных документов
Окончательно удаляет из базы данных "безопасно удаленные документы" (чистка корзины), дата помещения в корзину которых ранее указанного смещения дней относительно текущей даты. Смещение задается в настройке режима "СЕРВИСНЫЕ РЕЖИМЫ \ Просмотр удаленных документов - Окончательное удаление безопасно удаленных документов (дней)", по умолчанию 100 дней. - Закрытие периода (всех счетов бюджета)
Закрывает все незакрытые дни с 01 января по заданную дату по всем счетам бюджета. В параметрах команды (скрипта) в поле "Выполняемая команда" следует задать: смещение относительно системной даты сервера для определения последнего закрываемого дня, уровень закрытия и логин, от имени которого будет проведено закрытие.
Данную задачу следует начать применять с начала года, не позднее января. Если задача подключается позже, то предварительно следует вручную закрыть предыдущие дни с начала года в режиме "Навигатор: СЕРВИСНЫЕ РЕЖИМЫ \ Закрытие периода". В противном случае первое выполнение задачи может занять много времени (часы) и завершиться отказом из-за превышения таймаута соединения с сервером СУБД.
-- СУБД MS SQL
-- параметры: DayBack - смещение дней от текущей даты, nLevel - уровень закрытия,
-- user=... - логин пользователя, от имени которого будут закрываться дни (должен иметь права на счета бюджета).
execute ('execute dbo.locked_day_close_timer @DayBack = -3, @nLevel = 1') as user = 'admin_day_close'
-- СУБД Postgre
-- Закрытие идет по счетам бюджета, доступным пользователю, запускающему функцию.
-- параметры: v_DayBack - смещение дней от текущей даты, v_nLevel - уровень закрытия.
select dbo.Locked_Day_Close_Timer (v_DayBack := -2, v_nLevel := 1);
При выполнении задачи закрываются дни с 01.01 по указанную дату (= системная дата SQL - заданное в параметре @DayBack число дней), независимо от наличия в них документов. Закрытие выполняется для счетов бюджета, доступных пользователю, под которым стартует процедура dbo.locked_day_close_timer. Если необходимо закрывать дни для документов без счета бюджета, то следует использовать дополнительный параметр @CloseEmpty = 1.