|   |   | 
| 
 | СамоОтчет: регламентное задание - детальное расписание дня | ☑ | ||
|---|---|---|---|---|
| 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: Интеграция     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |