|
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) Описание: Дата завершения задания (только для завершенных заданий). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |