Как изменить интервал обработчика ожидания когда он уже запущен? #669850


#0 by Cerera
В модуле приложения в функции "ПриНачалеРаботыСистемы", подключается обработчик ожидания с нужным интервалом. Как после того, как он уже запущен, поменять этот интервал? Допустим, я хочу, чтобы он брался из настройки пользователя или константы. Но как заставить систему отключить обработчик ожидания и запустить уже с новым параметром?
#1 by vicof
Глобальный контекст.ОтключитьОбработчикОжидания (Global context.DetachIdleHandler) Глобальный контекст (Global context) ОтключитьОбработчикОжидания (DetachIdleHandler) Синтаксис: ОтключитьОбработчикОжидания(<ИмяПроцедуры>) Параметры: Тип: Строка. Имя процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля, используемой в качестве обработчика ожидания. Описание: Отключает подключенный ранее при помощи процедуры ПодключитьОбработчикОжидания вызов процедуры через определенный интервал времени. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Пример: См. также: Глобальный контекст, метод ПодключитьОбработчикОжидания
#2 by Галахад
Вот поэтому-то и не зарабатываешь 150 тыс.
#3 by ДенисЧ
отключиьт и подключтьб - не предлагать?
#4 by Cerera
я знаю эти команды. только вопрос был не в этом. вопрос заключался в другом - как мне заставить поменяться интервалу? обработку достаточно запустить с этой командой? Команда будет доступна в пределах видимости самой обработки, а мне надо, чтобы в глобальном контексте было это.
#5 by Cerera
даже так лучше сформулировать: Где мне вызвать эти команды? Скорее всего в самом обработчике, который я запустил. Только Как сделать, чтобы стало понятно, что значение константы или  настройки пользователя изменилось?
#6 by ДенисЧ
подписку на запись константы - не предлагать?
#7 by Cerera
это уже куда не шло. А если при смене значения характеристики? В настройке пользователя если поменяю значение характеристики "Интервал..." ? Как это событие отловить
#8 by Cerera
точнее даже не характеристики. А настройки пользователя. Это же в регистре хранится судя по всему.
#9 by AaNnDdRrEeYy
обработчик повесь и подписчик
#10 by Cerera
а на что именно повесить?
#11 by AaNnDdRrEeYy
для тебя абсолютно пофигу что меняется. нужен сам факт изменения
#12 by AaNnDdRrEeYy
как нистранно изменения происходят при записи
#13 by ДенисЧ
да ядрить... Повесь второй обработчик, каждую минуту проверяй значения, если изменились - меняй первый.
#14 by Cerera
тоже хороший вариант. Я не спорю. Но если учесть, что интервал меняется не часто, то лишняя нагрузка на базу будет от второго обработчика. Или они не сильно кушают ресурс? И как проверять поменялось ли что то или нет? Сеансовые переменные заводить под это дело? Тогда можно не во втором обработчике проверку делать, а в функции, которая вызывается от первого обработчика
#15 by AaNnDdRrEeYy
я бы сначала вывел тараканов из головы или выспался ))
#16 by Cerera
не. ну я же всё логично рассуждаю. почти как программисты, получающие 150 тыщ
#17 by AaNnDdRrEeYy
да ты можешь хоть на элемент формы на событие ПриИзменении повесить обработчик, в котором отключать обработчик и подключать с новым интервалом, вариантов решения море...
#18 by Cerera
ну по сути я нашел ответ на свой вопрос. то что из форм обработок и объектов метаданных, можно управлять обработчиком, вызванном в глобальном модуле. Хотя прокрадывалось подозрение, что область видимости команд обработок не распространяется на глобальный контекст.
#19 by AaNnDdRrEeYy
на то он и глобальный, что виден отовсюду
#20 by Cerera
Ребята! Ну ёжкин кот. Смотрите какая ситуация: Если я стартую программу и в модуле "При начале работы системы" был выполнен код                ПодключитьОбработчикОжидания("ТестированиеОтправкиСообщений",ИнтервалМеждуВыводомВсплывающихНапоминанийМинут*60); То, если из формы справочника или обработки, я его отключу, он отключится, а потом снова включу - он включится. Но если при запуске системы в функции "ПриНачалеРаботыСистемы" я не запускаю этот обработчик изза того, что у пользователя в настройках не стоит галочка "запускать уведомления", то даже когда я потом зайду в справочник пользователя, установлю эту галочку, вызовется обработчик                ПодключитьОбработчикОжидания("ТестированиеОтправкиСообщений",ИнтервалМеждуВыводомВсплывающихНапоминанийМинут*60); То обработчик ТестированиеОтправкиСообщений, располагаемый в  модуле прилолжения, уже не будет вызываться. это не честно. Тогда что же мне делать? запускать обработчик при старте системы при любом раскладе, а потом его отключать в этом же модуле, если галочка не установлена, чтоб потом пользователь зайдя в справочник, мог установить галочку и чтоб обработчик начал работать?
#21 by Cerera
Бред написал. Короче если мы из формы запускаем этот обработчик, то хрен там он будет запускать функцию глобального модуля... Я был прав. Я достоин 150 тыщ. Ладно. решил по другому вопрос.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С