Имя: Пароль:
1C
 
Как запустить выполнение Процедуры в определенное время?
0 gr13
 
13.05.04
11:36
Интересный вопрос, собственно.
К примеру мне надо запустить завершение работы системы, для всех пользователей в 12.00?
ОбработкаОжидания запускает данную процедуру с заданным интервалом, а как не с интервалом, а на заданное время?
1 Львенок
 
13.05.04
11:40
Проверить в обработке ожидания текущее время.
___
Искренне Ваш, Львенок.
2 gr13
 
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; "
Заменить Сделано на глСделано;
___
Искренне ваш, Львенок.
5 Gavrila
 
13.05.04
13:25
если (0) то только ВК
6 gr13
 
13.05.04
13:31
Все понятно, спасибо. Интересный выход из положения
7 gr13
 
13.05.04
13:33
(5) почему, я так понимаю, что данная процедура в глобальном, будет работать со всеми пользователями?
8 Frol
 
13.05.04
13:35
Можно сделать проще.
В предопределенной процедуре "ПриНачалеРаботыСистемы" необходимо просто вычислить, сколько секунд осталось до нужного времени и поместить в какуюнибудь глобальную переменную, например глКолСекунд. А потом вызвать
ОбработкаОжидания("глНужнаяПроцедура",глКолСекунд); // глНужнаяПроцедура - процедера в которой и запустите всё что хотите.
Естесственно, переменную глКолСекунд нужно определить.
9 Gavrila
 
13.05.04
13:39
(7) "ОбработкаОжидания запускает данную процедуру с заданным интервалом, а как не с интервалом, а на заданное время?" - вот на этот вопрос и ответ (5) :))
10 gr13
 
13.05.04
13:41
(9) Естессно, а в процедуре стоит контроль на время работы ее(процедуры)