Шедулер для 1С 7.7

Запуск отчетов и обработок по расписанию

Мне, как и многим пользователям 1С 7.7, часто приходиться запускать разного рода обработки и отчеты, не требующие ответной реакции . Т.е., обработка запустилась, что-то сделала и на этом все. К примеру, надо выгрузить отчет поставщику или руководителю. Или открыть период в оперативном учете, особенно если база работает 24х7. Или запустить ночное восстановление последовательности в разделенном режиме. Каждому рано или поздно надоедает запускать все это добро в ручном режиме и начинаются мысли по автоматизации запуска этих обработок. После использования различных костылей собственной и сторонней разработки был сочинен означенный шедулер.

Строго говоря, уместнее назвать эту обработку «Очередь запуска отчетов и обработок», т.к. задания могут выполняться только последовательно и, соответственно, гарантировать, что задание будет выполнено строго в заданное время, нельзя. Т.е., если есть 2 задания с разницей в запуске в 1 минуту, а выполнение первого задания занимает, допустим, 5 минут, то второе задание выполнится только по завершении выполнения первого. Следовательно, эта обработка может гарантировать только последовательный запуск заданий не ранее заданного времени. Тем не менее, пусть будет шедулер. На этом прелюдию можно считать законченной и перейти к описанию.

Описание и принцип работы

Шедулер выполняет задания по следующему принципу:
1. Если задание активно (установлен флаг активности в колонке «А»), переходит к п.2, иначе — п.7.
2. Если задание сегодня уже выполнялось — п.7.
3. Если задание должно выполнятся по определенным дням месяца и текущая дата совпадает с графиком, то переходим к п.6, иначе — п.7.
4. Если задание должно выполнятся по определенным дням недели и текущий день совпадает с графиком, то переходим к п.6, иначе — п.7.
5. Если для задания не указаны конкретные дни, задание сегодня не выполнялось и текущее время >= заданному времени, то переходим к п.6, иначе — п.7.
6. Выполнение задания.
7. Переход к следующему заданию.

Работа с таблицей заданий.
Для добавления, удаления и очистки заданий используются кнопки «Х», «ХХ» и «+», расположенные под таблицей заданий.
Действие кнопок описано в подсказке при наведении курсора на кнопку.
Кроме того, существует контекстное меню, появляющееся при двойном клике по строке задания.
Возможны следующие действия:
— Изменить время. Позволяет изменить время выполнения задания.
— Снять отметку выполнения. Очищает дату последнего выполнения задания, что может понадобиться, если необходимо это задание повторно запустить, а оно сегодня уже выполнялось.
— Изменить дату выполнения. Вариация пред. пункта, но позволяет отложить выполнение до определенной даты, не отменяя активности и не изменяя настроенного расписания.
— Переименовать задание.
— Изменить путь. Позволяет изменить путь к внешней обработке.
— Изменить заголовок колонки. Можно изменить выводимое имя колонки.
— Удалить колонку. Удаляет из таблицы заданий заданную колонку.
— Добавить колонку. Добавляет в таблицу заданий колонку.
Последние два пункта требуются при модификации таблицы заданий и кода обработки. Необходимые обработчики новых колонок добавляются самостоятельно, а обработчики удаляемых колонок подлежат удалению из кода шедулера.

Работа с таблицей параметров.
Если для запуска обработки из задания необходимо передать некоторые параметры, то они добавляются в эту таблицу. Параметры передаются как список значений.
Возможные типы передаваемых параметров:
— Дата.
— Число (длина = 2, точность = 0, неотрицательное).
— Строка (макс. длина = 100).
— Шаблон (макс. длина = 100).
— Элемент или группа справочника.
— Документ.
— Список значений.

Тип «Число» предназначен для передачи целых неотрицательных чисел до 99 включительно. Если требуется передать другое число, необходимо воспользоваться типом «Шаблон».
Тип «Шаблон» используется, когда необходимо передать число, несовместимое с типом «Число» или значение параметра должно быть вычисляемым. Например, шаблон [Ч]1+1.1 передаст в задание число 2.1, а шаблон [Д]ТекущаяДата() — текущую дату. Предусмотрено только два вида шаблонов — «[Ч]» и «[Д]».

Кнопки управления:
— «+». Добавить новый параметр. Необходимо указать имя и тип параметра.
— «Х». Удаляет параметр под курсором.
— «ХХ». Удаляет все параметры текущего задания.
— «ХХХ». Удаляет все параметры всех заданий.
— «К». Копирует все параметры текущего задания в другое задание.
— «КК». Копирует все параметры текущего задания во все остальные задания.

Работа с таблицей «Дни месяцев».
Если задание необходимо выполнять по определенным числам определенных месяцев, надо заполнить эту таблицу. Состав таблицы: номер месяца, дни месяца.
Кнопки управления:
— «З». Заполняет таблицу номерами месяцев от 1 до 12.
— «+». Позволяет добавить дни для выбранного месяца. Номера дней вводятся через запятую, возможные значения от 1 до 31. Вводить можно в любом порядке, при окончании редактирования значения будут отсортированы по возрастанию, а некорректные и повторяющиеся значения будут удалены. Т.е., если была введена строка «5,2,32,6,1,1», то в таблицу попадет «1,2,5,6».
— Кнопка с иконкой редактирования дает возможность отредактировать дни месяца.
— «Х». Удаляет месяц под курсором.
— «ХХ». Очищает таблицу месяцев.
— «К». Позволяет скопировать таблицу месяцев текущего задания в другое задание.

Работа с днями недели.
Если задание необходимо выполнять по конкретным дням недели, то заполняется строка «Дни недели». Значения вводятся аналогично дням месяца, возможные значения от 1 до 7, где 1 соответсвует понедельнику, 2 — вторнику и т.д.
Кнопка с иконкой редактирования служит для ввода или редактирования списка дней. Кнопка «К» копирует список дней в другое задание.

Группа «Журнал заданий».
Если установлен флажок «Вести журнал», то действия по запуску заданий будут записываться в лог-файл. Просмотреть его можно, нажав кнопку «Показать». Кнопка «Очистить» очищает журнал.
В журнал записываются события начала и результат (выполнено, не выполнено) окончания выполнения каждого задания.

Под таблицей заданий расположены кнопки «Сохранить», «Закрыть», «Выполнить» и флаг «Выполнять пропущенные».

Любые изменения в заданиях применяются немедленно для текущего сеанса, но в сохраненные настройки они попадут только после нажатия кнопки «Сохранить». Т.о., для отмены изменений достаточно закрыть шедулер без сохранения.

Кнопка «Выполнить» служит для разового старта заданий. Задания будут выполняться на общих основаниях в соответствие с принципами, указанными в начале описания.

Кнопка «Закрыть» закрывает шедулер.

Если установлен флаг «Выполнять пропущенные», то будут выполнены задания, которые по какой-либо причине сегодня не отработали (напр., забыли сделать задание активным). Задание должно быть активным.

Кнопка «Старт» служит для перевода шедулера в автоматический режим, при котором периодически опрашивается таблица заданий и запускаются задания, для которых подошло время. При этом в заголовок шедулера добавляется текст «Ожидание выполнения заданий». Кнопка «Стоп», соответственно, отключает этот режим.

Можно создать пользователя 1С, у которого в «ПриНачалеРаботыСистемы» прописать:   

Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение("1","Автозапуск");
ОткрытьФорму("Отчет",Параметры,"ПутьШедулер.ert");

тогда при запуске 1С от этого пользователя сразу запустится шедулер в автоматическом режиме.
Если к конфигурации подключена библиотека 1с++, то при переходе шедулера в автоматический режим становиться невозможным повторный запуск шедулера в текущей базе 1С.

1 Comment

  1. Утюг

    Исправлена ошибка кода.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *