Имя: Пароль:
1C
1С v8
1с 8 Регламентное задание
0 Sereja
 
10.12.18
15:17
Добрый день.
Мне нужно выполнять Регламентное задание раз в 10 минут. Но, это же задание я выполняю и программно время от времени. Я хочу что б если был программный вызов, то задание выполнилось через 10 минут после моего программного вызова. Прочитал про свойство "ПаузаПовтора" в рег.задании. Выставил это значение тоже 10 минут. Но задание не видит, что я его вызывал программно. Подскажите, как сделать так, что б задание видело, что оно вызывалось программно?

Вызываю рег задание следующим образом: ФоновыеЗадания.Выполнить("МойМодуль.МоеЗадание");
1 Sereja
 
10.12.18
15:30
ап?
2 palsergeich
 
10.12.18
15:34
(0) Дело в том что регламентное задание ничего не знает о том, что вы там что то самостоятельно запускали.
ТЗ некорректно и исправить можно только костылями.
3 Sereja
 
10.12.18
15:35
(2) Это я понял, что рег.задание не знает что я его выполнил. В этом и стоит вопрос, как сделать так, что б сообщить заданию, что я его выполнил
4 palsergeich
 
10.12.18
15:42
Данный функционал не реализован
5 Sereja
 
10.12.18
15:49
(4) Спасибо
6 Mr_Best
 
10.12.18
16:22
(3) у фонового задания есть куча параметров, например в методе Выполнить() можно передать в качестве параметра переменную типа Булево или установить разные Ключи.
7 Mr_Best
 
10.12.18
16:24
(3)
Параметры = Новый Массив;
Параметры.Добавить(Ложь); // Истина);
Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
8 Очевидно
 
10.12.18
16:25
(3) ну как вариант хранить дату последнего выполнения где-нибудь в хранилище настроек ... и при начале выполнения её читать и проверять на факт "Прошло 10 минут" или нет ...
9 Mr_Best
 
10.12.18
16:26
(3) а в модуле оформляешь свою процедуру:

Процедура имяПроцедуры(ПрограммныйВызов = Ложь) Экспорт
10 palsergeich
 
10.12.18
16:26
(6) Это не то.
Ключ - он нужен для контроля уникальности - одновременно может быть запущено только 1 задание с уникальным УИД.
На сколько я помню - последний запуск, завершение регламентного задания пишется в служебную таблицу. и на ее данных и работают параметры ПаузаПовтора и им подобные.
Фоновое задание - туда не пишет.
(8) (9) А это уже пошли резные костыли
11 Mr_Best
 
10.12.18
16:26
(3) такм образом, когда рег.задание запустит фоновое задание, будет ложь. А когда будешь запускать программно, просто передовай истину в параметрах и все
12 Mr_Best
 
10.12.18
16:27
(10) да, но в нутри фонового задания можно проверить ключь и что то сделать. Но лучше параметры
13 Artk
 
10.12.18
16:27
(0) журнал не подойдёт?
14 Mr_Best
 
10.12.18
16:28
(13) медленный
15 Mr_Best
 
10.12.18
16:28
(13) но как костыль на случай, когда совсем плохо ... )))))) но лучше так не делать
16 Artk
 
10.12.18
16:29
(14) в таком случае делайте регистр и ведите быстрый
17 palsergeich
 
10.12.18
16:30
(11) Ему надо что бы если 10 минут интервал был после последнего запуска даже если это было в ручном режиме.
То есть что бы регламентное задание "знало" о том что кто то запускал ранее в ручном режиме.
Без служебных данных которые надо хранить - не выйдет.
Как самый простой вариант - попробовать использовать Хранилище настроек - костылище, но хотя бы не придется создавать новые объекты метаданных.
И сделать запуск разв минуту исмотреть в хранилищенастроек, прошло 10 мин или еще нет
18 Очевидно
 
10.12.18
16:31
(10) ну как бы да, тут без костыля, желаемого эффекта не достигнуть ИМХО.
(13) создавать таблицу для этой цели ? или одну переменную в хранилище настроек ... по моему лучше одну переменную, чем целую таблицу ...
19 Mr_Best
 
10.12.18
16:31
тогда нужен планировщик
20 Artk
 
10.12.18
16:31
(17) журнал, такой же костыль , но там есть уже данные о старте
21 Mr_Best
 
10.12.18
16:32
что то должно планировать время следующего запуска после каждого последнегозапуска
22 Mr_Best
 
10.12.18
16:32
и меня время старта регламентного задания на нужное спланированное
23 Mr_Best
 
10.12.18
16:33
точность будет хорошая))))
24 Artk
 
10.12.18
16:34
(22) регламентные задание для чтения последнего запуска и запуска обработки из этого регламентного задания, если интервал с последнего запуска > сколько нужно.
25 Mr_Best
 
10.12.18
16:37
(24) точность будет меньше, если это приемлемо, то хороший вариант
26 Artk
 
10.12.18
16:41
(25) если создать таблицу, то скорость чтения позволит точность до секунды, если писать в хранилище, т.е существует гипотетическая вероятность одновременных записи чтения и как вариант лишнего запуска. Опять же что важно.
Можно журнал, хранилище, регистр и считывать с учётом скорости получения данных
27 Ник080808
 
10.12.18
16:47
(0) При программном выполнении анализируешь последнее выполненное фоновое задание и после выполнения корректируешь расписание.
28 palsergeich
 
10.12.18
19:55
Вы серьезно предлагаете человеку читать ТЖ:(
А если этот уровень предупреждений выключат на боевой?
А если ТЖ вообще выключат на боевой?
А если ТЖ переведут на другой формат?
А если ТЖ весит 100гб и его никто не чистит пока место на диске не кончится?
Поиметь проблем просто на ровном месте....
29 catena
 
11.12.18
05:27
(28)Э... Зачем ТЖ?
Получить РЗ по наименованию:

МенеджерРегламентныхЗаданий (ScheduledJobsManager)
ПолучитьРегламентныеЗадания (GetScheduledJobs)
Синтаксис:
ПолучитьРегламентныеЗадания(<Отбор>)

Последнее ФЗ:

РегламентноеЗадание (ScheduledJob)
ПоследнееЗадание (LastJob)
Описание:
Тип: ФоновоеЗадание.
Последнее выполнившееся фоновое задание.

Параметры последнего ФЗ:

ФоновоеЗадание (BackgroundJob)
Начало (Begin)
Описание:
Дата запуска задания.

ФоновоеЗадание (BackgroundJob)
Конец (End)
Описание:
Дата завершения задания (только для завершенных заданий).
Основная теорема систематики: Новые системы плодят новые проблемы.