Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   С какой периодичностью происходит опрос фоновых заданий? (http://forums.kuban.ru/f1040/s_kakoj_periodichnost-yu_proishodit_opros_fonovyh_zadanij-3388581.html)

Pampula 04.12.2012 15:23

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

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

Buzz 04.12.2012 16:11

смотреть расписание регламентного задания.

Pampula 04.12.2012 16:31

Написано "каждые 60 сек.", то есть больше 10 сек. Непонятно, почему сообщение несколько раз выводится. Причём с одним и тем же ключом.

Buzz 04.12.2012 16:47

Сделать через запись журнала регистрации "начало задания" - "окончание задания". И посмотреть сколько раз выполняется процедура.

Reaper 04.12.2012 20:48

это что за пример для [url]http://govnokod.ru/[/url] ?
Где это выполняется? В каком контексте?

Pampula 05.12.2012 08:00

[quote=Reaper;28007812] это что за пример для [url]http://govnokod.ru/[/url] ? Где это выполняется? В каком контексте? [/quote]
Тут самописная конфа, в общем модуле есть такая процедурка:
Процедура ОповещениеОВыполненииФоновыхЗаданий() Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

После выполнения отчёта в фоновом режиме выдаётся соотв. сообщение. Но у юзера оно почему-то несколько раз выводится, причём с одним и тем же ключом. Я подозреваю, что эта процедура несколько раз в течение 10 секунд выполняется. Как узнать, с какой периодичностью это выполняется?

Reaper 05.12.2012 08:32

Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же.

Pampula 05.12.2012 09:47

[quote=Reaper;28011473] Да потому, что подключена эта процедура у юзера как обработчик ожидания с периодом меньше 10 секунд. Кто-то вон пытался ее отключить, только обработчик ожидания зачем-то спутал с обработчиком оповещения. А приведенная процедура синтаксису обработчика оповещения не соответствует же. [/quote]
Reaper, я с фоновыми вещами не работал никогда. Подскажите, пожалуйста, где найти этот период ожидания? Может, его просто увеличить надо?
Буду очень признателен...

Buzz 05.12.2012 10:16

Процедура должна быть в ПодключитьОбработчикОжидания. Смотреть ПриНачалеРаботыСистемы. Вот в ней и выставлен интервал вызова.


Текущее время: 21:20. Часовой пояс GMT +3.