|
ОбработчикОжидания() | ☑ | ||
---|---|---|---|---|
0
AjAj
30.08.12
✎
15:25
|
Коллеги, необходимо было решить задачу. При старте системы открыть окно обработки. Обновлять ТабличнуюЧасть обработки каждые 3 минуты.
Для этого в модуле формы обработки написали процедуру Процедура ПриОткрытии() ПодключитьОбработчикОжидания("ЗаполнитьТабЧасть",180); КонецПроцедуры По замерам вызываемая процедура ЗаполнитьТабЧасть выполняется за 0,004 сек. В базе 50 пользователей. Сегодня утром запустил это дело. Периодически стали появляться ошибки "На сервере 1С недостаточно памяти". Связываю это с вышеизложенными изменениями, хотя и не уверен. Вопрос к гуру - как работает ПодключитьОбработчикОжидания() ? Сильно ли он грузит системные ресурсы? Есть ли альтернативный вариант для решения поставленной задачи? ИМХО: Это же не цикл, чтоб "жрать" ресурсы? По идее он должен просто запускать обработку с периодом в N секунд? Тогда почему перестало хватать памяти? |
|||
1
AjAj
30.08.12
✎
15:43
|
Никто не в курсе? Неужели никто не пользовался Обработчиком Ожидания?
|
|||
2
ДенисЧ
30.08.12
✎
15:45
|
Если отключить её - память перестанет течь?
ЧТо делается в процедуре? |
|||
3
Reset
30.08.12
✎
15:45
|
При чем тут обработчик ожидания то?
|
|||
4
vmv
30.08.12
✎
15:46
|
(0) в своих конфах не использую технологию обработчиков ожидания, в типовых не приветсвую, ибо они действительно НЕ Рационально жрут ресурсы, а на вопрос зачем часто мямлят всякую чушь.
Обновлять табличную часть нужно по событиям формы, а не не молиться бездушному и тупому богу Ожидания |
|||
5
AjAj
30.08.12
✎
15:53
|
(2) Отключил. Перезагрузил сервер. Память действительно перестала "течь".
В процедуре все предельно просто. Обновляется табличная часть в которой строки - документы одного автора. Никаких "наворотов" (3) При том, что с его использованием память "потекла". (4) А если обновлять надо не по событиям, а именно раз в 3 минуты? |
|||
6
vmv
30.08.12
✎
15:57
|
(5) Вот прямо там сидит тело и смотри на часы каждые три минуты в томлении - не ври мне. Обновлять надо когда источники(поставщики) данных формы изменены, ну для того тела можно в шапку формы вывести крсными буквами надпись
"Данные формы в БД не изменялись с 00:00:00 1910 г" и пусть сидит пялиться |
|||
7
Reset
30.08.12
✎
15:59
|
(5) Проблема может быть в выполняемом коде, а никак не в механизме
Это равносильно "Компьютер виноват, потому что если его выключить, проблема исчезает" |
|||
8
Reset
30.08.12
✎
16:00
|
(6) А как узнать, что источник изменился?
|
|||
9
vmv
30.08.12
✎
16:01
|
(6) данные формы могут меняться часто, поэтому можно еще завести параметр формы ДатаВремя и контролировать период последнего обновления, ну это так блаж.
А ОбработчикиОжидания() - фуфло, которое взяло на воооружение вся молодая поросль от бизнес-приложений до веб и потом чещут репу, блин чо тармазит, ведь так нящно вся дрыгаеться |
|||
10
Heckfy
30.08.12
✎
16:01
|
(5)
Процедура Задержка(КолМиллесекунд) Экспорт Шелл=Новый COMОбъект("WScript.Shell"); Шелл.run("ping -n 1 -w "+Формат(КолМиллесекунд,"ЧГ=")+" 0.0.0.1",0,-1); КонецПроцедуры |
|||
11
vmv
30.08.12
✎
16:01
|
(8) "А вот это тебе, лысый - я не скажу"(с)
|
|||
12
AjAj
30.08.12
✎
16:05
|
(10) Классно!
|
|||
13
Heckfy
30.08.12
✎
16:17
|
(12) Точнее так:
Процедура ВыполнитьКнопка(Команда) Задержка = 5; СтрокаЗапроса = "ping -n 1 -w "+Формат(1000*Задержка, "ЧГ=0") +" 127.255.255.255"; WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(СтрокаЗапроса, 0, -1); КонецПроцедуры |
|||
14
Skylark
30.08.12
✎
16:31
|
А регламентное задание тут не прокатит?
|
|||
15
Skylark
30.08.12
✎
16:32
|
не, не прокатит
|
|||
16
AjAj
31.08.12
✎
09:32
|
В общем. если что, то может кому пригодится на будущее:
ОбработчикОжидания можно использовать и ресурсов он не жрет, НО: 1. Использовать его в модуле формы вне процедур и функций. 2. НЕ использовать в модально открытой форме (он там просто работать не будет) Вот итог общения с коллегами, серфинга интернета, ну и личного опыта ))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |