1
ЧеловекДуши
24.06.15
✎
09:40
|
(0) Регламентные задания запускают Фоновые задания, и никто не гарантирует, что 1С не запустит повторно фоновое задание, когда оно еще не завершилась по тому же самому Регламентному заданию :)
...помогает выставить парамерт в Расписании задания "повторять с паузой"...
Но народ сетует, что типо и это не выход, бывает слетает...
...набросал немного коду... может пригодится... :)
//Тестовая проверка регламентного задания на выполнение
//Разместить в модуле выполнения Регламентного задания...
РезПроверкиРеглЗадания = РегламентноеЗаданиеВыполняется("ТвояРегламентнаяЗадача");
Если РезПроверкиРеглЗадания = Истина Тогда
Возврат;
КонецЕсли;
//==================
//Тестовая проверка регламентного задания на выполнение
Функция РегламентноеЗаданиеВыполняется(ИмяЗадания) Экспорт
Попытка
РеглЗадание = РегламентныеЗадания.НайтиПредопределенное(ИмяЗадания);
//Если вызывает регламентное задание
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Состояние,РегламентноеЗадание",СостояниеФоновогоЗадания.Активно,РеглЗадание));
Если НЕ ЗначениеЗаполнено(МассивЗаданий)
или МассивЗаданий.Количество() = 0 Тогда
//Нет Активных... и это Хорошо...
ИначеЕсли МассивЗаданий.Количество() = 1 Тогда
Если ПустаяСтрока(ИмяПользователя())
или РольДоступна("РегламентноеЗадание")
Тогда
//Выполнение регл задания...
Иначе
ТекстСообщения = "Зафиксирована попытка повторного запуска регламентного задания: "+ИмяЗадания;
ЗаписатьОшибку(ТекстСообщения,"Регламентное задание");
Возврат Истина;
КонецЕсли;
Иначе
ТекстСообщения = "Зафиксирована попытка повторного запуска регламентного задания: "+ИмяЗадания;
ЗаписатьОшибку(ТекстСообщения,"Регламентное задание");
Возврат Истина;
КонецЕсли;
Исключение
ОписОшиб = ОписаниеОшибки();
ТекстСообщения = "Не удалось проверить регламентное задание на повторный запуск: "+Строка(ИмяЗадания)+"
|Опис: "+ОписОшиб;
ЗаписатьОшибку(ТекстСообщения,"Регламентное задание");
Возврат Неопределено;
КонецПопытки;
//Признак того, что Задание не выполняется
Возврат Ложь;
КонецФункции
|
|