|
|
Как запустить выполнение Процедуры в определенное время? |
☑ |
|
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) Естессно, а в процедуре стоит контроль на время работы ее(процедуры)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший