Вход | Регистрация

1С:Предприятие ::

Метки:Приемы программирования

Как запустить выполнение Процедуры в определенное время?

Я
   Львенок
 
1 - 13.05.04 - 11:40
Проверить в обработке ожидания текущее время.
___
Искренне Ваш, Львенок.
   gr13
 
2 - 13.05.04 - 11:51
ОбработкаОжидания во втором параметре стоит время в секундах, а не проверка, хотя может что нить недокументированного?
   Львенок
 
3 - 13.05.04 - 13:07
//-------ГлобальныйМодуль начало

Перем глСделано;

//-------ГлобальныйМодуль серидина, где все процедуры

Процедура глСделатьТогдаТо()
   Ч=0;М=0;С=0;
   ТекущееВремя(Ч,М,С);
   Время=Ч+М*60+С*3600;
   Если (Время>=Константа.ВремяХ) И (Время<=Константа.ВремяХ+300) И (Сделано=0) Тогда
        Сделано=1;
        глСделатоТоТо()//Здесь делаем то, что нужно сделать

   КонецЕсли;
КонецПроцедуры

//-------ГлобальныйМодуль самый конец, после всех процедур

ОбработкаОжидания("глСделатьТогдаТо()",5);
глСделано=0//Еще ничего не сделано

Есть константа ВремяХ, которая задает то значение времени (в секундах прошедших с начала суток) в которое надо что-то сделать. Процедура глСделатьТогдаТо() выполняется каждые пять секунд и проверяет не настало ли ВремяХ, если время уже настало то делает то, что нужно. Если в течении пяти минут после наступления времени "Х" 1С будет сильно занята (формировать какой-то сложный отчет), то "Что-то" может и не выполнится. Если в течении пяти минут после наступления времени "Х" пользователь выйдет из 1С и снова зайдет в нее "Что-то" может выполниться более одного раза.
Примерно так.
___
Искренне Ваш, Львенок.
   Львенок
 
4 - 13.05.04 - 13:08
Ошибочка: "Если (Время>=Константа.ВремяХ) И (Время<=Константа.ВремяХ+300) И (Сделано=0) Тогда 
   Сделано=1; "
Заменить Сделано на глСделано;
___
Искренне ваш, Львенок.
   Gavrila
 
5 - 13.05.04 - 13:25
если (0) то только ВК
   gr13
 
7 - 13.05.04 - 13:33
(5) почему, я так понимаю, что данная процедура в глобальном, будет работать со всеми пользователями?
   Frol
8 - 13.05.04 - 13:35
Можно сделать проще.
В предопределенной процедуре "ПриНачалеРаботыСистемы" необходимо просто вычислить, сколько секунд осталось до нужного времени и поместить в какуюнибудь глобальную переменную, например глКолСекунд. А потом вызвать
ОбработкаОжидания("глНужнаяПроцедура",глКолСекунд); // глНужнаяПроцедура - процедера в которой и запустите всё что хотите.
Естесственно, переменную глКолСекунд нужно определить.
   Gavrila
 
9 - 13.05.04 - 13:39
(7) "ОбработкаОжидания запускает данную процедуру с заданным интервалом, а как не с интервалом, а на заданное время?" - вот на этот вопрос и ответ (5) :))
   gr13
 
10 - 13.05.04 - 13:41
(9) Естессно, а в процедуре стоит контроль на время работы ее(процедуры)
 
  Рекламное место пустует


Список тем форума
  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует