Обработка очереди заданий. Регламентное задание ОбработкаОчередиЗаданийБТС.
// Регламентное задание ОбработкаОчередиЗаданийБТС.
//
// Параметры:
// ПараметрыЗадания - СправочникСсылка.ДополнительныеОбработчикиОчередиЗаданий.
//
Процедура ОбработкаОчередиЗаданий(ПараметрыЗадания) Экспорт
ДатаЗавершения = ТекущаяУниверсальнаяДата() + ПараметрыЗадания.ДлительностьЗадания;
Если ПараметрыЗадания.КоличествоЗаданий = 1 Тогда
ТекстЗапроса = ТекстЗапросаЗаданияВОчереди();
ОбработатьОчередьЗаданий(ПараметрыЗадания, ДатаЗавершения, ТекстЗапроса);
Иначе
ТекстЗапроса = ТекстЗапросаКоличествоЗаданийВОчереди();
ЗапуститьФоновыеЗадания(ПараметрыЗадания, ТекстЗапроса);
КонецЕсли;
ЭтоЗадание = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
Если ЭтоЗадание = Неопределено Или ПараметрыЗадания.ДлительностьЗадания = 0 Тогда
Возврат;
КонецЕсли;
Если ЭтоЗадание.РегламентноеЗадание = Неопределено Тогда
Возврат;
КонецЕсли;
ПериодОжидания = ЭтоЗадание.РегламентноеЗадание.Расписание.ПериодПовтораВТечениеДня;
Если ПериодОжидания = 0 Или ПериодОжидания > 20 Тогда
Возврат;
КонецЕсли;
Пока ДатаЗавершения > ТекущаяУниверсальнаяДата() Цикл
Попытка
ЭтоЗадание.ОжидатьЗавершения(ПериодОжидания);
Исключение
// Специальная обработка не требуется, возможно исключение вызвано истечением времени ожидания.
КонецПопытки;
Если ПараметрыЗадания.КоличествоЗаданий = 1 Тогда
ОбработатьОчередьЗаданий(ПараметрыЗадания, ДатаЗавершения, ТекстЗапроса);
Иначе
ЗапуститьФоновыеЗадания(ПараметрыЗадания, ТекстЗапроса);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////