Имя: Пароль:
1C
1С v8
Событие при запуске сервера 1С
,
0 xavchik
 
07.09.17
10:53
Всем доброго дня. Вопрос следующий:
Есть сервер 1С, на сервере выполняются регламентные задания. Сервер 1С или физический сервер могут быть перезагружены по разным причинам. Требуется сделать так, чтобы регламентные задания не выполнялись (или выполнялись, но в модуле процедуры все действия пропускались, например, по состоянию константы) после рестарта до тех пор, пока пользователь не зайдет в пользовательском режиме и не включит работы регламентных заданий вручную. Например, задаст нужное значение константы.

Я предполагаю, что должно быть событие, которое возникаем при старте сервера 1С и в котором можно поставить константу в состояние "Выключено", но не могу найти где. Есть идеи?
1 rudnitskij
 
07.09.17
10:59
(0) есть идея проверять при запуске регламента равно ли время текущее времени запуска задания, при несовпадении не запускать
2 xavchik
 
07.09.17
11:13
Не понял. А почему оно обязательно не должно быть равно текущему времени при перезагрузке? А если оно не исполнялось в момент перезапуска а просто стартануло новое срезу после запуска?
3 rudnitskij
 
07.09.17
11:15
(2) "А почему оно обязательно не должно быть равно текущему времени при перезагрузке?" - потому что это вытекает из постановки вопроса в (0). Вы ведь хотите, чтобы задание, намеченное на 2-00, не выполнялось при перезапуске в 6-00?
4 rudnitskij
 
07.09.17
11:15
(3) но чтоб стабильно выполнялось в 2-00
5 xavchik
 
07.09.17
11:17
Уточню тогда задачу: РЗ выполняются очень часто, через 5 секунд, например, и без даты начала и окончания. Т.е. постоянно запускаются через каждые 5 секунд.
6 rudnitskij
 
07.09.17
11:21
(5) юзайте консоль заданий, определяйте в ней расписание
7 Черный маклер
 
07.09.17
11:23
если у сервера 1С не стоит отложенный запуск, то регламентные задания и так не будут выполняться :)
8 xavchik
 
07.09.17
11:28
(6) Так я и так юзаю. Я к этой консоли установил расписание для заданий = каждые 5 секунд. Они активны и отлично работают. Вопрос в том, чтобы после ребута они стали не активными и ждали,пока я явно их не включу
9 xavchik
 
07.09.17
11:29
(7) Можно поподробнее, что это такое "Отложенный запуск"?
10 Fedor-1971
 
07.09.17
11:30
(8) сними галочку "Предопределённое" у регламентного задания и после рестарта сервера оно тупо не будет выполняться до пинка пользователя, например, из консоли заданий
11 Fedor-1971
 
07.09.17
11:33
(9) это свойство сервиса винды, стартовать сразу при запуске или погодить пока система выйдет в некую стабильную работу (если правильно помню это примерно после регистрации компа в домене, т.е. сеть полностью доступна и остановлены неиспользующиеся сервисы)
12 Fedor-1971
 
07.09.17
11:40
10+ а что будет если некому дать пинка на выполнение регламента? просто оцени что вызовет больше проблем автовыполнение регламента или его полное отсутствие. К стати можно попробовать изменить алгоритм работы регламентного задания на примерно такой устанавливаем блокировку на элемент некого справочника с кодом 001, если успешно - выполняем алгоритм (по завершении блокировку снимаем), если нет - ничего не делаем (уже работает другой экземпляр)
13 xavchik
 
07.09.17
11:41
(10) Галочка "Предопределенное" в РЗ в конфигураторе и так снята. А вот галочка "Использование" вызвала интерес. Проверил, но все равно, если задание использовалось перед рестартом, то оно и остается в этом состоянии посре растарты сервиса
14 xavchik
 
07.09.17
11:44
(12) Пусть лучше будет нЕкому дать пинка, чем что-то пойдет не так :-) И с блокировкой тоже не подходит, так как таких задач много и смысл в том, чтобы они могли выполняться параллельно.
15 xavchik
 
07.09.17
11:47
(10) + Честно говоря вообще не понятно, зачем галочка "Использование" есть в конфигураторе. Разве что только в случае первоначального заполнения РЗ в базе, чтобы расставить эти галочки при создании РЗ в БД по умолчанию.
16 Fedor-1971
 
07.09.17
11:51
(13) недавно ковырялся в регламентах на 8.2 регламентный задания без пинка после рестарта почему-то не заводились
(14) а что мешает выделить каждому типу заданий свой элемент справочника?
как я понял алгоритм регламента рассчитан на параллельное выполнение нескольких экземпляров? тогда что может пойти не так?
17 Черный маклер
 
07.09.17
11:55
(16) ...недавно ковырялся в регламентах на 8.2 регламентный задания без пинка после рестарта почему-то не заводились - см.(7)
18 xavchik
 
07.09.17
11:57
(16) Попробовал разные варианты в конфигураторе: Предопределенное = Да, Использование = Нет, все - нет и т.д. Все равно стартуют.

Я использую Ключ, чтобы не выполнялось два задания одновременно. Так что блокировка элементов справочника тут не требуется. А пойти может не так следующее: фоновое задание отправляет несколько документов во внешнюю систему. И они должны быть отправлены либо все, либо ни один не должен быть. Есть система падает на середине отправки, то надо вмешаться и удалить уже отправленные сообщения из внешней системы перед продолжением работы.
19 rudnitskij
 
07.09.17
12:36
(18) нельзя проверять наличие доков на удаление и их удалять автоматически перед запуском следующего экземпляра?
20 xavchik
 
07.09.17
13:30
(19) Это решение опять же их серии блокировки элементов справочника. Оно сможет работать при аварийной остановке Фонового задания. А если задание не было завершено аварийно, а просто даже и не выполнялось в момент ребута, т.е. завершилось корректно последний раз, отметило где-то, что завершилось и потом произошел ребут. Да, отчасти это сможет решить проблему, но это не очень надежное решение.
21 rudnitskij
 
07.09.17
13:47
(20) заведите константу, в которую будете писать ИСТИНА или ЛОЖЬ в зависимости от успешности завершения выполнения регламента. Из нее при следующем запуске будете узнавать - надо или не надо удалять отправленные доки
22 xavchik
 
07.09.17
13:56
(21) Да, по всей видимости так и придется сделать. Пока решения лучше тоже не вижу. Спасибо!
23 rudnitskij
 
07.09.17
14:02
(22) не забудьте в начале выполнения задания писать в нее ЛОЖЬ
2 + 2 = 3.9999999999999999999999999999999...