Имя: Пароль:
1C
1С v8
Запрет одновременного выполнения рег.задания
0 ildary
 
22.08.18
06:33
Уважаемые специалисты, подскажите пожалуйста, как правильно сделать так, чтобы рег.задание не могло повторно запуститься, если оно еще не отработало? Я прочитал про параметр Ключ, но не совсем уверен, что он будет работать для одного и того задания (в документации сказано что это для объединения нескольких в группу). 1С 8.3.10 последняя, УФ, самописка, сервер приложений находится в облаке (не фреш), подобное (одновременное выполнение рег.задания) случается редко (фактически впервые). ТЖ будет настроен, но боюсь, что он даст причину, но не даст способ решения его (например внезапный рестарт процесса rphost). Поможет ли Ключ или самый правильный способ - это внутри самого рег.задания ввести собственный флаг при запуске и контролировать его? Задание связано с импортом данных в 1С и при одновременном запуске - задваиваются загруженные документы.
1 Cool_Profi
 
22.08.18
06:36
Я за флаг
2 Мимохожий Однако
 
22.08.18
07:05
Попробуй код
Процедура ВыполнитьЗадание()
    ПараметрыЗадания=Новый Структура;
    ПараметрыЗадания.Вставить("Состояние",СостояниеФоновогоЗадания.Активно);
    ПараметрыЗадания.Вставить("Ключ",Ключ);
    
    Если фоновоеЗаданиеУжеЗапущено(ПараметрыЗадания) Тогда
        Возврат;
    КонецЕсли;
    //далее задание    
    //...........
КонецПроцедуры

Функция ФоновоеЗаданиеУжеЗапущено(ПараметрыЗадания)
    МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыЗадания);
    Если МассивЗаданий.Количество() > 1 Тогда
        Возврат Истина;
    КонецЕсли;
    Возврат Ложь;
КонецФункции // ЗаданиеУжеЗапущено()
3 ildary
 
22.08.18
07:34
(1)+(2) большое спасибо за ответ! Сделаем именно так.
4 Мимохожий Однако
 
22.08.18
07:41
(3) Сообщи результат. Может быть, и мне пригодится ))
5 dmpl
 
22.08.18
08:40
(0) 1С в типовом решении использует константу, которую устанавливает на входе и снимает на выходе из задания.
6 dmpl
 
22.08.18
08:42
(2) А если в этот же момент времени на другом компьютере выполняется этот же код?