Имя: Пароль:
1C
 
СамоОтчет: регламентное задание - детальное расписание дня
0 Serg_1960
 
22.10.08
11:17
Проблема: Ежедневный циклический запуск регламентного задания с произвольным дневным расписанием в файловой версии базы.

Задача: Используя обработку "Консоль заданий", заполнить "Детальное расписание дня" согласно произвольному расписанию.

Примечание: из-за отсутствия спецификаций алгоритмом платформы :) и из-за отсутствия описания данного процесса в документации :( см. например: http://users.v8.1c.ru/Info/Platform/8_1_9_54/V8AddDoc81.htm ) столкнулся с проблемой синхронизации выполнения регламентных заданий на серверах в РИБ-базе для автоматизации процесса обмена :( см. ветку v8: Эй ты, регламентная зараза, бой курантов слышишь, - запускайся! )
1 Serg_1960
 
22.10.08
11:36
Решение:
1) Необходимо указать пользователя для выполнения регламентных заданий и периодичность (назовем его "X") выполнения фонового задания для запуска метода платформы ВыполнитьОбработкуЗаданий().
Примечание: периодически запускаемое фоновое задание эммулирует работу планировщика заданий клиент-серверного варианта базы.
Проверка расписаний заданий (соответствено - запуск заданий), будет происходить с кратностью "X" - это необходимо учитывать в дальнейшем и помнить о том, что момент времени запуска ВыполнитьОбработкуЗаданий() зависит от момента времени запуска сеанса программы плюс некоторое время, пока алгоритм конфигурации "доберется" до запуска фонового задания и оно начнет циклически запускать этот метод платформы.
2 Serg_1960
 
22.10.08
11:47
2) Как реализовать различные метода запуска регламентных заданий  - указано в документации (без комментария):

Примеры расписаний регламентных заданий:

Каждый час, только один день:
  ПериодПовтораДней = 0,
  ПериодПовтораВТечениеДня = 3600
 
Каждый день один раз в день:
  ПериодПовтораДней = 1,
  ПериодПовтораВТечениеДня = 0
 
Один день, один раз:
  ПериодПовтораДней = 0
 
Через день один раз в день:
  ПериодПовтораДней = 2
 
Каждый час с 01.00 до 07.00 каждый день:
  ПериодПовтораДней = 1
  ПериодПовтораВТечениеДня = 3600
  ВремяНачала = 01.00
  ВремяКонца = 07.00
 
Каждую субботу и воскресенье в 09.00:
  ПериодПовтораДней = 1
  ДниНедели = 6, 7
  ВремяНачала = 09.00
 
Каждый день одну неделю, неделя пропуска:
  ПериодПовтораДней = 1
  ПериодНедель = 2
 
В 01.00 один раз:
  ВремяНачала = 01.00
 
Последнее число каждого месяца в 9:00
  ПериодПовтораДней = 1
  ДеньВМесяце = -1
  ВремяНачала = 09.00
 
Пятое число каждого месяца в 9:00
  ПериодПовтораДней = 1
  ДеньВМесяце = 5
  ВремяНачала = 09.00
 
Вторая среда каждого месяца в 9:00
  ПериодПовтораДней = 1
  ДеньНеделиВМесяце = 2
  ДниНедели = 3
  ВремяНачала = 09.00
3 Serg_1960
 
22.10.08
13:20
Реализуем расписание: запуск каждый час с 8:00 по 17:00 с "перерывом на обед" (с 12:00 до 14:00)

В расписании на закладке "Дневное":

Укажем расписание на первую половину дня:
Нажимаем пиктограмму "Добавить" табличной части "Детальное расписание дня" и указываем реквизиты:
Время начала: 8:00:00
Время окончания: 12:00:00
Завершить после: 12:00:00
Повторять через: 3600

Укажем расписание на вторую половину дня:
Нажимаем пиктограмму "Добавить" табличной части "Детальное расписание дня" и указываем реквизиты:
Время начала: 14:00:00
Время окончания: 17:00:00
Повторять через: 3600

Примечание: Вы должны заранее открыть сеанс работы пользователя для выполнения регламентных заданий - если хотите, чтобы задания выполнялись в 8:00 - 9:00 - и т.д. Если Вы откроете сеанс работы позже 8:00 (например: 8:15) - то первый раз задание будет выполнено при открытии программы, следующее - через час (в 9:15) и т.д.
4 Serg_1960
 
22.10.08
13:40
Реализовываем "произвольное" расписание...
Например такое: 8:00 - 9:45 - 11:30 - и т.д.

В обработке "Консоль заданий" детальное расписание можно заполнить вот такими записями:

Расписание для запуска в 8:00
Время начала: 8:00:00
Время окончания: 8:01:00
Повторять через: 50

Расписание для запуска в 9:45
Время начала: 9:45:00
Время окончания: 9:46:00
Повторять через: 50

Расписание для запуска в 11:30
Время начала: 11:30:00
Время окончания: 11:31:00
Повторять через: 50

- и т.д.
5 Serg_1960
 
22.10.08
14:46
Примечание: Почему такие "странные" значения?
Значения могут быть и другие... Мои пояснения:

Можно ли указать только значение "Время начала" без значения "Время окончания"? Да, в принципе, можно.
Я указал "Время окончания" по одной причине: если потребуется временно прервать сеанс программы, то при повторном запуске сеанса будет запущено регламентное задание - в расписание указано "выполнять с..." :( А это уже нарушение нашего произвольного расписания...
Помимо этого, надо будет заменить значение "Повторять через". Понятно почему - иначе наше задание начнет многократно выполняться. Почему "заменить" значение, зачем оно нужно вообще? Без значения "Повторять через" расписание получит свойство "один раз в день"... и перестанет исполняться :(
6 Serg_1960
 
22.10.08
14:56
Почему значение "Время окончания" такое "странное"? Мне его все равно надо указывать :) Оно "зависит" от периодичности запуска
ВыполнитьОбработкуЗаданий(). В файловой версии базы я указал периодичность фонового задания для запуска ВыполнитьОбработкуЗаданий() в 1 минуту. Так, как невозможно точно предсказать момент времени запуска этого метода - я "подстраховался" :) Теперь уже неважно когда именно этот метод запустится :) - он "обнаружит" действующий период детального расписания...

А почему Вы указали такое значение "Повторять через"? Можно было и другое. Например: 1 сек. Это зависит от длительности выполнения фонового задания. То, которое указано у меня, может выполняться от 10 сек. и дольше. Указанное значение "гарантирует" только однократное выполнение фонового задания...
7 Serg_1960
 
22.10.08
15:00
Так, про "это" я сказал, про "то" - упомянул... что-то было еще, помню... нет уже забыл!
Короче: есть вопросы? Задавайте на форуме - Вам ответят :)
Всем спасибо за внимание *:о)
8 Serg_1960
 
22.10.08
16:14
Модераторы! Можно ветке тему поменять на v8: Интеграция
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс