|
v7: ОбработкаОжидания в 77 | ☑ | ||
---|---|---|---|---|
0
Z_Z
12.08.11
✎
15:40
|
Добрый день. Вопрос к спецам 77. Если написать в глобальном модуле в процедуре приНачалеРаботыСистеме следуюшее:
ОбработкаОжидания("ЗагрузкаДокументовСФТП",50); ОбработкаОжидания("ВыгрузкаОстатковНаФТП",450); вопрос будут ли одновременно выполняться эти обработки? |
|||
1
ДенисЧ
12.08.11
✎
15:41
|
нет
|
|||
2
andrewks
12.08.11
✎
15:43
|
а вот если их прописать в двух разных формах - то да.
но это некошерно |
|||
3
Z_Z
12.08.11
✎
15:43
|
а как кошерно?
|
|||
4
andrewks
12.08.11
✎
15:47
|
делай функцию-заглушку с интервалом в наименьший делитель и отрабатывай сам
|
|||
5
FN
12.08.11
✎
15:48
|
(4)+ или с помощью формекса можно несколько обработок запустить
|
|||
6
Z_Z
12.08.11
✎
15:49
|
не понимаю((( а можно поподробней?
|
|||
7
FN
12.08.11
✎
15:52
|
(6) Вариант 1:
перем счетчикЗапусков; Процедура ЗагрузкаВыгрузка() счетчикЗапусков=счетчикЗапусков+1; Если счетчик%9=0 тогда Выгрузка(); КонецЕсли; Загрузка(); КонецПроцедуры счетчикЗапусков=1; ОбработкаОжидания("ЗагрузкаВыгрузка",50) |
|||
8
FN
12.08.11
✎
15:53
|
Вариант 2:
ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Сервис=СоздатьОбъект("Сервис"); Сервис.ОбработкаОжидания("Первая",50000); Сервис.ОбработкаОжидания("Вторая",450000); Сервис.ОбработкаОжидания("Третья",1000); |
|||
9
АЛьФ
12.08.11
✎
15:59
|
2(8) Если моя память не изменяет мне со склерозом, то все же так:
ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Сервис1=СоздатьОбъект("Сервис"); Сервис1.ОбработкаОжидания("Первая",50000); Сервис2=СоздатьОбъект("Сервис"); Сервис2.ОбработкаОжидания("Вторая",450000); Сервис3=СоздатьОбъект("Сервис"); Сервис3.ОбработкаОжидания("Третья",1000); |
|||
10
FN
12.08.11
✎
16:03
|
(9) с тобой спорить не буду
|
|||
11
Z_Z
12.08.11
✎
16:11
|
Огромное спасибо!
А АльФ это разработчик формикса?:) |
|||
12
nicxxx
12.08.11
✎
16:11
|
(11) да, только тсссс, никому не говори :)
|
|||
13
Z_Z
12.08.11
✎
16:31
|
(9) С формиксом глухо(( не запускается ни один сервис((
|
|||
14
АЛьФ
12.08.11
✎
16:33
|
2(13) Про область видимости переменных забыл. Сделай их глобальными переменными.
|
|||
15
Z_Z
12.08.11
✎
16:43
|
Наврал, отрабатывает только 1 процедура, сейчас со врменем запуска поиграюсь.
|
|||
16
Ёпрст
12.08.11
✎
16:58
|
(15) объект сервис должен быть глоб . переменной модуля
|
|||
17
Ёпрст
12.08.11
✎
16:59
|
+16 заместо сервиса, лучше пользоваться Таймером.. хотя, что там, что там есть некоторые моменты.. с допГлобальничками, к примеру.
|
|||
18
Z_Z
12.08.11
✎
17:12
|
Без глобальной переменой заметил, чтоб отрабатывает только последняя процедура . Если так то вторая
ЗагрузитьВнешнююКомпоненту("FormEx.dll"); если так первая Сервис2=СоздатьОбъект("Сервис"); Сервис2.ОбработкаОжидания("Вторая",450000); Сервис1=СоздатьОбъект("Сервис"); Сервис1.ОбработкаОжидания("Первая",50000); в прочем как и штатный обработчик |
|||
19
Z_Z
12.08.11
✎
17:17
|
И с глобальными переменными тоже только последняя обработка срабатывает(((
|
|||
20
Ёпрст
12.08.11
✎
17:23
|
(19) врешь.
|
|||
21
Z_Z
12.08.11
✎
17:28
|
в глобальном модуле пишу
Перем Сервис1 , Сервис2 Экспорт; ПриНачалеРаботыСистемы() ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Сервис2=СоздатьОбъект("Сервис"); Сервис2.ОбработкаОжидания("Вторая",450000); Сервис1=СоздатьОбъект("Сервис"); Сервис1.ОбработкаОжидания("Первая",50000); КонецПроцедуры Процедура первая() КонецПроцедуры Процедура Вторая() КонецПроцедуры И если по порядку сервис1 последний то работает только перва(), если последний сервис2 то вторая()(( |
|||
22
Ёпрст
12.08.11
✎
17:36
|
(21) выше подыми их .. процы
|
|||
23
Z_Z
12.08.11
✎
17:54
|
не помогло(( таже беда. Уже и новый Formex скачал и не помогает((
|
|||
24
Ёпрст
12.08.11
✎
17:57
|
брехня.. ты точно 45 секунд ждешь ?
|
|||
25
smaharbA
12.08.11
✎
18:01
|
(24) 450
|
|||
26
Ёпрст
12.08.11
✎
18:01
|
(25) а ну да.. :)
|
|||
27
Z_Z
12.08.11
✎
18:02
|
конечно. Говорю же меняю местами сервисы и рабоатат 450, но не работает 50
|
|||
28
smaharbA
12.08.11
✎
18:03
|
еще можно извращенный способ обработки ожидания, причем реально асинхронный, абсолютно штатно
|
|||
29
Z_Z
12.08.11
✎
18:10
|
могу выложить куда-то базу проверите
|
|||
30
Ёпрст
12.08.11
✎
18:13
|
выкладывай.
|
|||
31
Z_Z
12.08.11
✎
18:14
|
куда? чтоб без регистрации
|
|||
32
Z_Z
12.08.11
✎
18:16
|
||||
33
Z_Z
12.08.11
✎
18:44
|
Убедились, что не вру?
|
|||
34
Ёпрст
12.08.11
✎
18:56
|
(33) ну тогда Таймер используй.
|
|||
35
Z_Z
12.08.11
✎
19:07
|
А есть пример работы с таймером?
|
|||
36
Ёпрст
12.08.11
✎
19:16
|
(35)
объявлять его глоб переменной не надо.. Таймер = СоздатьОбъект("Таймер"); Таймер.ЗадатьОбработчикВГлобальномМодуле("Первая"); Таймер.Запустить(100); Таймер2 = СоздатьОбъект("Таймер"); Таймер2.ЗадатьОбработчикВГлобальномМодуле("Вторая"); Таймер2.Запустить(100); |
|||
37
smaharbA
12.08.11
✎
19:27
|
(21)
Процедура первая() Экспорт Далее Процедура вторая() Экспорт Далее ??? |
|||
38
Ёпрст
12.08.11
✎
19:28
|
(37) а пофик, не работает..
|
|||
39
Torquader
12.08.11
✎
23:21
|
Ага - можно ещё по DDE базу пинать - тогда всё работает, только потом не стоит удивляться, что вторая обработка запускается, когда первая не завершилась.
|
|||
40
smaharbA
12.08.11
✎
23:22
|
(38) а формекс не знаю, кроме расскраски всяких списков и тз
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |