gifts2017

Конвертация данных объекта "Расписание регламентного задания" платформы 1C в формат CRON

Опубликовал Two World (Prometeus2011) в раздел Администрирование - Системное

Алгоритм на основании расписания выполнения регламентного задания, описываемого данными объекта "Расписание регламентного задания", строит логически приближенное расписание в формате CRON.

Cron-формат это простой, но мощный и гибкий способ описания времени и периодичности действий. Подробно, например, здесь: _http://www.nncron.ru/nncronlt/help/RU/working/cron-format.htm. Следует особо обратить внимание на то, что существует несколько версий формата: "Традиционный" и "Улучшенный". Отличаются они наличием дополнительных полей  строки, задающей расписание и символов, описывающих значения полей. Предлагаемый алгоритм конвертации на выходе выдает данные в Улучшенном формате, с точностью до секунды.

Особенности.

1. Преобразование повторяющихся периодов.

Расписание 1С организовано по принципу беспрерывных циклов выполнения. Т.е. например, задается время начала и задача выполняется с периодичностью в 17 секунд. В Крон-формате такую цикличность выполнения описать с полной точностью планировщика 1С не получится, т.к. периодичность по времени (секунды, минуты, часы) в Крон-формате задается внутри старшей периодичности (минуты, часы) и со сменой старшей периодичности цикл перезапускается. В качестве решения было принято разделение одного расписания 1С на несколько Крон-расписаний, которые выполняются параллельно и охватывают все комбинации периодов. Однако, такое решение тоже на 100% не универсально, т.к. если его применять автоматически ко всей иерархии периодов, то в результате, на выходе может быть огромное число повторяющихся расписаний. В этой связи автогенерацию комбинаций мы ограничили: для  времени - сутками; для дней - месяцами.

Например, если пользователь хочет задать периодичность выполнения 25 200 секунд (7 часов), начиная с 0 часов каждый день, то последнее выполнение в текущий день запустится в 21 час. На следующий день запуск произойдет  не в 5 часов, а опять в 00 часов и последний запуск будет опять в 21 час. Если есть крититческая необходимость запуска ровно через 7 часов после последнего, то пользователю придется:

- Изменить дневную периодичность расписания на "запускать раз в 3 дня";

- Создать еще 2 расписания с дневнойпериодичностью запуска: раз в три дня и временем старта 5 часов и 3 часа - соответственно.

2. Дата начала. 

Если не указана дата начала, то она приравнивается к текущей дате.

3. Дата окончания.

Если не указана дата окончания, то день, месяц, год завершения не определены и устанавливаются в выходном расписании в зависимости от прочих входных параметров.

4. Повторять каждые Х дней.

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

5. Время начала - время первого выполнения задания в сутках

6. Время окончания - время, позже которого задания запускаться НЕ МОГУТ.

7. Повторять через - периодичность повтора задания в границах суток. Применяется принцип разделения на параллельные расписания.

8. Повторять с паузой - не учитывается.

9. Завершать после - не учитывается (т.к. формат крон не умеет описывать время, при наступлении которого процесс (задача) должен быть завершен принудительно)

10. Останавливать через - не учитывается (т.к. формат крон не умеет описывать период времени, через который запущенный процесс (задача) должен быть завершен принудительно)

11. Дни недели - так-же, как и в 1С определяет дни, в которые РАЗРЕШЕНО выполнение задания.

12. Повторять каждые Х недели - не очень понятная настройка. Мы посчитали, что это недельная периодичность выполнения. Т.е. "в первый день каждой Х недели". В выходное расписание просто добавляется еще одна параллельная периодичность.

13. Месячное расписание - месяцы, в которые РАЗРЕШЕНО выполнять задачу. Если все галки сняты, то это ровно то, что если все галки установлены. В крон-формате это символ "*", либо "?", либо 1-12.

14. Выполнять в Х день месяца. При преобразовании в формат Cron - в каждый месяц расписания добавлятся число, в которое задание будет запущено в указанное время, если дата не попадает в запрещенные недели или месяцы.

15. Выполнять в Х день недели в месяце. При преобразовании в формат Cron - в каждую неделю расписания добавлятся число, в которое задание будет запущено в указанное время, если дата не попадает в запрещенные недели или месяцы.

Да, п.п. 14, 15 могут работать только в режиме "с начала".

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Конвертор расписаний 1с-Крон
.epf 10,28Kb
10.10.16
0
.epf 10,28Kb 0 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа