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
| Цитата:
Процедура ОповещениеОВыполненииФоновыхЗаданий() Экспорт Если Константы.ОтключитьВыводСообщенийПриФормированииОт четовВФоновомРежиме.Получить() = Истина Тогда Возврат; КонецЕсли; Запрос = Новый Запрос(" |ВЫБРАТЬ | РезультатыФоновыхЗаданий.КлючЗадания |ИЗ | Справочник.РезультатыФоновыхЗаданий КАК РезультатыФоновыхЗаданий |ГДЕ | РезультатыФоновыхЗаданий.Пользователь = &Пользователь |"); Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.Пользователь); РезультатЗапроса = Запрос.Выполнить(); ВыборкаЗапроса = РезультатЗапроса.Выбрать(); ФлагОтключенияОповещения = Истина; Пока ВыборкаЗапроса.Следующий() Цикл МассивТекущгоЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Ключ", ВыборкаЗапроса.КлючЗадания)); Если МассивТекущгоЗадания.Количество() < 1 Тогда Продолжить; КонецЕсли; ТекущееЗадание = МассивТекущгоЗадания[0]; Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда Продолжить; КонецЕсли; ФлагОтключенияОповещения = Ложь; Если ТекущаяДата() - ТекущееЗадание.Конец <= 10 Тогда Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда Сообщить("Выполнено задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">"); ИначеЕсли ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда Сообщить("Завершено аварийно задание в фоновом режиме: <" + ТекущееЗадание.Наименование + ">. Ключ задания: <" + ВыборкаЗапроса.КлючЗадания + ">"); КонецЕсли; КонецЕсли; КонецЦикла; Если ФлагОтключенияОповещения Тогда #Если Клиент Тогда Попытка ОтключитьОбработчикОповещения("ОповещениеОВыполнен ииФоновыхЗаданий"); Исключение КонецПопытки; #КонецЕсли КонецЕсли; КонецПроцедуры // ОповещениеОВыполненииФоновыхЗаданий() После выполнения отчёта в фоновом режиме выдаётся соотв. сообщение. Но у юзера оно почему-то несколько раз выводится, причём с одним и тем же ключом. Я подозреваю, что эта процедура несколько раз в течение 10 секунд выполняется. Как узнать, с какой периодичностью это выполняется? | | |
6
- 05.12.2012 - 08:32
| Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же. | | |
7
- 05.12.2012 - 09:47
| Цитата:
Буду очень признателен... | | |
8
- 05.12.2012 - 10:16
| Процедура должна быть в ПодключитьОбработчикОжидания. Смотреть ПриНачалеРаботыСистемы. Вот в ней и выставлен интервал вызова. | |
| Интернет-форум Краснодарского края и Краснодара |