К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

С какой периодичностью происходит опрос фоновых заданий?

Гость
0 - 04.12.2012 - 15:23
В фоновом режиме выполняется отчёт. Потом выдаётся сообщение о том, что "Выполнено задание в фоновом режиме". Но оно выдаётся несколько раз. Код такой:
Если ТекущаяДата() - ТекущееЗадание.Конец <= 10 Тогда
Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Сообщить("Выполнено задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">");
КонецЕсли;
КонецЕсли;

Получается, что за эти 10 секунд в эту процедуру несколько раз входит. Где посмотреть, какая вообще периодичность этого процесса?



Гость
1 - 04.12.2012 - 16:11
смотреть расписание регламентного задания.
Гость
2 - 04.12.2012 - 16:31
Написано "каждые 60 сек.", то есть больше 10 сек. Непонятно, почему сообщение несколько раз выводится. Причём с одним и тем же ключом.
Гость
3 - 04.12.2012 - 16:47
Сделать через запись журнала регистрации "начало задания" - "окончание задания". И посмотреть сколько раз выполняется процедура.
Гость
4 - 04.12.2012 - 20:48
это что за пример для http://govnokod.ru/ ?
Где это выполняется? В каком контексте?
Гость
5 - 05.12.2012 - 08:00
Цитата:
Сообщение от Reaper Посмотреть сообщение
это что за пример для http://govnokod.ru/ ? Где это выполняется? В каком контексте?
Тут самописная конфа, в общем модуле есть такая процедурка:
Процедура ОповещениеОВыполненииФоновыхЗаданий() Экспорт

Если Константы.ОтключитьВыводСообщенийПриФормированииОт четовВФоновомРежиме.Получить() = Истина Тогда
Возврат;
КонецЕсли;

Запрос = Новый Запрос("
|ВЫБРАТЬ
| РезультатыФоновыхЗаданий.КлючЗадания
|ИЗ
| Справочник.РезультатыФоновыхЗаданий КАК РезультатыФоновыхЗаданий
|ГДЕ
| РезультатыФоновыхЗаданий.Пользователь = &Пользователь
|");

Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.Пользователь);

РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗапроса = РезультатЗапроса.Выбрать();

ФлагОтключенияОповещения = Истина;

Пока ВыборкаЗапроса.Следующий() Цикл

МассивТекущгоЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Ключ", ВыборкаЗапроса.КлючЗадания));

Если МассивТекущгоЗадания.Количество() < 1 Тогда
Продолжить;
КонецЕсли;

ТекущееЗадание = МассивТекущгоЗадания[0];

Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
Продолжить;
КонецЕсли;

ФлагОтключенияОповещения = Ложь;

Если ТекущаяДата() - ТекущееЗадание.Конец <= 10 Тогда
Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Сообщить("Выполнено задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">");
ИначеЕсли ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
Сообщить("Завершено аварийно задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">");
КонецЕсли;
КонецЕсли;

КонецЦикла;

Если ФлагОтключенияОповещения Тогда
#Если Клиент Тогда
Попытка
ОтключитьОбработчикОповещения("ОповещениеОВыполнен ииФоновыхЗаданий");
Исключение
КонецПопытки;
#КонецЕсли
КонецЕсли;

КонецПроцедуры // ОповещениеОВыполненииФоновыхЗаданий()

После выполнения отчёта в фоновом режиме выдаётся соотв. сообщение. Но у юзера оно почему-то несколько раз выводится, причём с одним и тем же ключом. Я подозреваю, что эта процедура несколько раз в течение 10 секунд выполняется. Как узнать, с какой периодичностью это выполняется?
Гость
6 - 05.12.2012 - 08:32
Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же.
Гость
7 - 05.12.2012 - 09:47
Цитата:
Сообщение от Reaper Посмотреть сообщение
Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же.
Reaper, я с фоновыми вещами не работал никогда. Подскажите, пожалуйста, где найти этот период ожидания? Может, его просто увеличить надо?
Буду очень признателен...
Гость
8 - 05.12.2012 - 10:16
Процедура должна быть в ПодключитьОбработчикОжидания. Смотреть ПриНачалеРаботыСистемы. Вот в ней и выставлен интервал вызова.


К списку вопросов






Copyright ©, Все права защищены