|
Как внутри регламентного задания узнать что оно уже выполняется. | ☑ | ||
---|---|---|---|---|
0
ProgAL
22.09.15
✎
14:31
|
Добрый день.
Есть задача формировать документы по куче подразделений раз в день, утром. Задание выполняется несколькими фоновыми заданиями и чаще всего хорошо. Сам процесс занимает 1,5 часа. Но иногда сервер падает и нужно раз в полчаса перевыполнять регламентное задание и доформировывать оставшиеся документы. Как внутри регламентного задания понять что оно уже/еще выполняется. Нижеприведенный код определяет что задание уже выполняется т к по сути вызывается изнутри выполняющегося задания. Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(); Для Каждого Фоновое из Фоновые Цикл РегламентноеЗадание = Фоновое.РегламентноеЗадание; Если РегламентноеЗадание <> Неопределено Тогда Если СокрЛП(РегламентноеЗадание.Наименование) = "Формирование внутренних заказов с отбором" Тогда Возврат; // задание выполняется, еще раз выполнять не нужно КонецЕсли; КонецЕсли; КонецЦикла; |
|||
1
Spieluhr
22.09.15
✎
16:18
|
ключ
|
|||
2
Симпатяга
22.09.15
✎
16:20
|
(0) Есть стандартная обработка 1с. Консоль заданий.
Она как раз пишет, когда задание выполняется. Стоит посмотреть её код. |
|||
3
Fragster
гуру
22.09.15
✎
16:21
|
(2) нет, правильнее (1). Задаем ключ равным подразделению. второй раз платформа сама не даст запустить задание.
|
|||
4
Симпатяга
22.09.15
✎
16:34
|
Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
Для Каждого Регламентное из Регламентные Цикл ПоследнееЗадание = Регламентное.ПоследнееЗадание; Сообщить(ПоследнееЗадание.Состояние); Конеццикла (3) чем не устраивает? |
|||
5
ProgAL
22.09.15
✎
16:40
|
(4) Делал. Оно само себя определяет как активное. Поэтому некорректно.
|
|||
6
VikingKosmo
22.09.15
✎
16:45
|
(5) ответ в (1)
|
|||
7
ProgAL
22.09.15
✎
17:19
|
(3) А как это сделать? У меня ключ задан в виде числа.
|
|||
8
ProgAL
23.09.15
✎
12:06
|
Получилось сделать так - в процедуре, которая выполняется регламентным заданием, пишем следующий код
НаборПараметров = Новый Массив; НаборПараметров.Добавить(ТаблицаПодразделенийДляПередачиВЗадание); НаборПараметров.Добавить(КомментарийВнутреннегоЗаказа); НаборПараметров.Добавить(ПостроительВнутреннегоЗаказа); НаборПараметров.Добавить(ВыбВариантНастроек); // запуск фонового задания Задание = ФоновыеЗадания.Выполнить("омРегламентныеЗадания.РассчитатьИСоздатьВнутрЗаказ", НаборПараметров, "уник_фвз_" + НомерПотока); важен 3-й параметр. В начале этой же процедуры пишем следующий код Фоновые = ФоновыеЗадания.ПолучитьФоновыеЗадания(); Для Каждого Фоновое из Фоновые Цикл Если Найти(Фоновое.Ключ, "уник_фвз_") > 0 И Фоновое.Состояние = СостояниеФоновогоЗадания.Активно Тогда Возврат; КонецЕсли; КонецЦикла; . |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |