Имя: Пароль:
1C
1С v8
Как изменить интервал обработчика ожидания когда он уже запущен?
,
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 тыщ. Ладно. решил по другому вопрос.