|
Как изменить интервал обработчика ожидания когда он уже запущен? | ☑ | ||
---|---|---|---|---|
0
Cerera
20.06.13
✎
09:47
|
В модуле приложения в функции "ПриНачалеРаботыСистемы", подключается обработчик ожидания с нужным интервалом.
ПодключитьОбработчикОжидания("ТестированиеОтправкиСообщений",60*2); Как после того, как он уже запущен, поменять этот интервал? Допустим, я хочу, чтобы он брался из настройки пользователя или константы. Но как заставить систему отключить обработчик ожидания и запустить уже с новым параметром? |
|||
1
vicof
20.06.13
✎
09:47
|
Глобальный контекст.ОтключитьОбработчикОжидания (Global context.DetachIdleHandler)
Глобальный контекст (Global context) ОтключитьОбработчикОжидания (DetachIdleHandler) Синтаксис: ОтключитьОбработчикОжидания(<ИмяПроцедуры>) Параметры: <ИмяПроцедуры> (обязательный) Тип: Строка. Имя процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля, используемой в качестве обработчика ожидания. Описание: Отключает подключенный ранее при помощи процедуры ПодключитьОбработчикОжидания вызов процедуры через определенный интервал времени. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Пример: Процедура ОтчетОпродажахЗаДень() // ... КонецПроцедуры; //... ПодключитьОбработчикОжидания("ОтчетОпродажахЗаДень", 60); //... ОтключитьОбработчикОжидания("ОтчетОпродажахЗаДень"); См. также: Глобальный контекст, метод ПодключитьОбработчикОжидания |
|||
2
Галахад
гуру
20.06.13
✎
09:48
|
Вот поэтому-то и не зарабатываешь 150 тыс.
|
|||
3
ДенисЧ
20.06.13
✎
09:49
|
отключиьт и подключтьб - не предлагать?
|
|||
4
Cerera
20.06.13
✎
09:53
|
(1)(2)(3)я знаю эти команды. только вопрос был не в этом. вопрос заключался в другом - как мне заставить поменяться интервалу? обработку достаточно запустить с этой командой? Команда будет доступна в пределах видимости самой обработки, а мне надо, чтобы в глобальном контексте было это.
|
|||
5
Cerera
20.06.13
✎
09:55
|
даже так лучше сформулировать: Где мне вызвать эти команды? Скорее всего в самом обработчике, который я запустил. Только Как сделать, чтобы стало понятно, что значение константы или настройки пользователя изменилось?
|
|||
6
ДенисЧ
20.06.13
✎
09:55
|
(5) подписку на запись константы - не предлагать?
|
|||
7
Cerera
20.06.13
✎
09:57
|
(6)это уже куда не шло. А если при смене значения характеристики? В настройке пользователя если поменяю значение характеристики "Интервал..." ? Как это событие отловить
|
|||
8
Cerera
20.06.13
✎
09:58
|
(6)точнее даже не характеристики. А настройки пользователя. Это же в регистре хранится судя по всему.
|
|||
9
AaNnDdRrEeYy
20.06.13
✎
09:59
|
(7) обработчик повесь и подписчик
|
|||
10
Cerera
20.06.13
✎
09:59
|
(9)а на что именно повесить?
|
|||
11
AaNnDdRrEeYy
20.06.13
✎
09:59
|
для тебя абсолютно пофигу что меняется. нужен сам факт изменения
|
|||
12
AaNnDdRrEeYy
20.06.13
✎
10:00
|
(10) как нистранно изменения происходят при записи
|
|||
13
ДенисЧ
20.06.13
✎
10:01
|
да ядрить...
Повесь второй обработчик, каждую минуту проверяй значения, если изменились - меняй первый. |
|||
14
Cerera
20.06.13
✎
10:06
|
(13)тоже хороший вариант. Я не спорю. Но если учесть, что интервал меняется не часто, то лишняя нагрузка на базу будет от второго обработчика. Или они не сильно кушают ресурс? И как проверять поменялось ли что то или нет? Сеансовые переменные заводить под это дело? Тогда можно не во втором обработчике проверку делать, а в функции, которая вызывается от первого обработчика
|
|||
15
AaNnDdRrEeYy
20.06.13
✎
10:08
|
(14)я бы сначала вывел тараканов из головы или выспался ))
|
|||
16
Cerera
20.06.13
✎
10:08
|
(15)не. ну я же всё логично рассуждаю. почти как программисты, получающие 150 тыщ
|
|||
17
AaNnDdRrEeYy
20.06.13
✎
10:10
|
да ты можешь хоть на элемент формы на событие ПриИзменении повесить обработчик, в котором отключать обработчик и подключать с новым интервалом, вариантов решения море...
|
|||
18
Cerera
20.06.13
✎
10:30
|
(17)ну по сути я нашел ответ на свой вопрос. то что из форм обработок и объектов метаданных, можно управлять обработчиком, вызванном в глобальном модуле. Хотя прокрадывалось подозрение, что область видимости команд обработок не распространяется на глобальный контекст.
|
|||
19
AaNnDdRrEeYy
20.06.13
✎
10:34
|
на то он и глобальный, что виден отовсюду
|
|||
20
Cerera
21.06.13
✎
08:58
|
Ребята! Ну ёжкин кот. Смотрите какая ситуация:
Если я стартую программу и в модуле "При начале работы системы" был выполнен код ПодключитьОбработчикОжидания("ТестированиеОтправкиСообщений",ИнтервалМеждуВыводомВсплывающихНапоминанийМинут*60); То, если из формы справочника или обработки, я его отключу, он отключится, а потом снова включу - он включится. Но если при запуске системы в функции "ПриНачалеРаботыСистемы" я не запускаю этот обработчик изза того, что у пользователя в настройках не стоит галочка "запускать уведомления", то даже когда я потом зайду в справочник пользователя, установлю эту галочку, вызовется обработчик ПодключитьОбработчикОжидания("ТестированиеОтправкиСообщений",ИнтервалМеждуВыводомВсплывающихНапоминанийМинут*60); То обработчик ТестированиеОтправкиСообщений, располагаемый в модуле прилолжения, уже не будет вызываться. это не честно. Тогда что же мне делать? запускать обработчик при старте системы при любом раскладе, а потом его отключать в этом же модуле, если галочка не установлена, чтоб потом пользователь зайдя в справочник, мог установить галочку и чтоб обработчик начал работать? |
|||
21
Cerera
21.06.13
✎
09:31
|
Бред написал. Короче если мы из формы запускаем этот обработчик, то хрен там он будет запускать функцию глобального модуля... Я был прав. Я достоин 150 тыщ. Ладно. решил по другому вопрос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |