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 могут работать только в режиме "с начала".