![]() |
С какой периодичностью происходит опрос фоновых заданий? В фоновом режиме выполняется отчёт. Потом выдаётся сообщение о том, что "Выполнено задание в фоновом режиме". Но оно выдаётся несколько раз. Код такой: Если ТекущаяДата() - ТекущееЗадание.Конец <= 10 Тогда Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда Сообщить("Выполнено задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">"); КонецЕсли; КонецЕсли; Получается, что за эти 10 секунд в эту процедуру несколько раз входит. Где посмотреть, какая вообще периодичность этого процесса? |
смотреть расписание регламентного задания. |
Написано "каждые 60 сек.", то есть больше 10 сек. Непонятно, почему сообщение несколько раз выводится. Причём с одним и тем же ключом. |
Сделать через запись журнала регистрации "начало задания" - "окончание задания". И посмотреть сколько раз выполняется процедура. |
это что за пример для [url]http://govnokod.ru/[/url] ? Где это выполняется? В каком контексте? |
[quote=Reaper;28007812] это что за пример для [url]http://govnokod.ru/[/url] ? Где это выполняется? В каком контексте? [/quote] Тут самописная конфа, в общем модуле есть такая процедурка: Процедура ОповещениеОВыполненииФоновыхЗаданий() Экспорт Если Константы.ОтключитьВыводСообщенийПриФормированииОтчетовВФоновомРежиме.Получить() = Истина Тогда Возврат; КонецЕсли; Запрос = Новый Запрос(" |ВЫБРАТЬ | РезультатыФоновыхЗаданий.КлючЗадания |ИЗ | Справочник.РезультатыФоновыхЗаданий КАК РезультатыФоновыхЗаданий |ГДЕ | РезультатыФоновыхЗаданий.Пользователь = &Пользователь |"); Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.Пользователь); РезультатЗапроса = Запрос.Выполнить(); ВыборкаЗапроса = РезультатЗапроса.Выбрать(); ФлагОтключенияОповещения = Истина; Пока ВыборкаЗапроса.Следующий() Цикл МассивТекущгоЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Ключ", ВыборкаЗапроса.КлючЗадания)); Если МассивТекущгоЗадания.Количество() < 1 Тогда Продолжить; КонецЕсли; ТекущееЗадание = МассивТекущгоЗадания[0]; Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда Продолжить; КонецЕсли; ФлагОтключенияОповещения = Ложь; Если ТекущаяДата() - ТекущееЗадание.Конец <= 10 Тогда Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда Сообщить("Выполнено задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">"); ИначеЕсли ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда Сообщить("Завершено аварийно задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">"); КонецЕсли; КонецЕсли; КонецЦикла; Если ФлагОтключенияОповещения Тогда #Если Клиент Тогда Попытка ОтключитьОбработчикОповещения("ОповещениеОВыполненииФоновыхЗаданий"); Исключение КонецПопытки; #КонецЕсли КонецЕсли; КонецПроцедуры // ОповещениеОВыполненииФоновыхЗаданий() После выполнения отчёта в фоновом режиме выдаётся соотв. сообщение. Но у юзера оно почему-то несколько раз выводится, причём с одним и тем же ключом. Я подозреваю, что эта процедура несколько раз в течение 10 секунд выполняется. Как узнать, с какой периодичностью это выполняется? |
Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же. |
[quote=Reaper;28011473] Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же. [/quote] Reaper, я с фоновыми вещами не работал никогда. Подскажите, пожалуйста, где найти этот период ожидания? Может, его просто увеличить надо? Буду очень признателен... |
Процедура должна быть в ПодключитьОбработчикОжидания. Смотреть ПриНачалеРаботыСистемы. Вот в ней и выставлен интервал вызова. |
Текущее время: 21:20. Часовой пояс GMT +3. |