Имя: Пароль:
1C
1C 7.7
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) а формекс не знаю, кроме расскраски всяких списков и тз
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший