Событие при запуске сервера 1С #804411


#0 by xavchik
Всем доброго дня. Вопрос следующий: Есть сервер 1С, на сервере выполняются регламентные задания. Сервер 1С или физический сервер могут быть перезагружены по разным причинам. Требуется сделать так, чтобы регламентные задания не выполнялись (или выполнялись, но в модуле процедуры все действия пропускались, например, по состоянию константы) после рестарта до тех пор, пока пользователь не зайдет в пользовательском режиме и не включит работы регламентных заданий вручную. Например, задаст нужное значение константы. Я предполагаю, что должно быть событие, которое возникаем при старте сервера 1С и в котором можно поставить константу в состояние "Выключено", но не могу найти где. Есть идеи?
#1 by rudnitskij
есть идея проверять при запуске регламента равно ли время текущее времени запуска задания, при несовпадении не запускать
#2 by xavchik
Не понял. А почему оно обязательно не должно быть равно текущему времени при перезагрузке? А если оно не исполнялось в момент перезапуска а просто стартануло новое срезу после запуска?
#3 by rudnitskij
"А почему оно обязательно не должно быть равно текущему времени при перезагрузке?" - потому что это вытекает из постановки вопроса в . Вы ведь хотите, чтобы задание, намеченное на 2-00, не выполнялось при перезапуске в 6-00?
#4 by rudnitskij
но чтоб стабильно выполнялось в 2-00
#5 by xavchik
Уточню тогда задачу: РЗ выполняются очень часто, через 5 секунд, например, и без даты начала и окончания. Т.е. постоянно запускаются через каждые 5 секунд.
#6 by rudnitskij
юзайте консоль заданий, определяйте в ней расписание
#7 by Черный маклер
если у сервера 1С не стоит отложенный запуск, то регламентные задания и так не будут выполняться :)
#8 by xavchik
Так я и так юзаю. Я к этой консоли установил расписание для заданий = каждые 5 секунд. Они активны и отлично работают. Вопрос в том, чтобы после ребута они стали не активными и ждали,пока я явно их не включу
#9 by xavchik
Можно поподробнее, что это такое "Отложенный запуск"?
#10 by Fedor-1971
сними галочку "Предопределённое" у регламентного задания и после рестарта сервера оно тупо не будет выполняться до пинка пользователя, например, из консоли заданий
#11 by Fedor-1971
это свойство сервиса винды, стартовать сразу при запуске или погодить пока система выйдет в некую стабильную работу (если правильно помню это примерно после регистрации компа в домене, т.е. сеть полностью доступна и остановлены неиспользующиеся сервисы)
#12 by Fedor-1971
10+ а что будет если некому дать пинка на выполнение регламента? просто оцени что вызовет больше проблем автовыполнение регламента или его полное отсутствие. К стати можно попробовать изменить алгоритм работы регламентного задания на примерно такой устанавливаем блокировку на элемент некого справочника с кодом 001, если успешно - выполняем алгоритм (по завершении блокировку снимаем), если нет - ничего не делаем (уже работает другой экземпляр)
#13 by xavchik
Галочка "Предопределенное" в РЗ в конфигураторе и так снята. А вот галочка "Использование" вызвала интерес. Проверил, но все равно, если задание использовалось перед рестартом, то оно и остается в этом состоянии посре растарты сервиса
#14 by xavchik
Пусть лучше будет нЕкому дать пинка, чем что-то пойдет не так :-) И с блокировкой тоже не подходит, так как таких задач много и смысл в том, чтобы они могли выполняться параллельно.
#15 by xavchik
+ Честно говоря вообще не понятно, зачем галочка "Использование" есть в конфигураторе. Разве что только в случае первоначального заполнения РЗ в базе, чтобы расставить эти галочки при создании РЗ в БД по умолчанию.
#16 by Fedor-1971
недавно ковырялся в регламентах на 8.2 регламентный задания без пинка после рестарта почему-то не заводились а что мешает выделить каждому типу заданий свой элемент справочника? как я понял алгоритм регламента рассчитан на параллельное выполнение нескольких экземпляров? тогда что может пойти не так?
#17 by Черный маклер
...недавно ковырялся в регламентах на 8.2 регламентный задания без пинка после рестарта почему-то не заводились - см.
#18 by xavchik
Попробовал разные варианты в конфигураторе: Предопределенное = Да, Использование = Нет, все - нет и т.д. Все равно стартуют. Я использую Ключ, чтобы не выполнялось два задания одновременно. Так что блокировка элементов справочника тут не требуется. А пойти может не так следующее: фоновое задание отправляет несколько документов во внешнюю систему. И они должны быть отправлены либо все, либо ни один не должен быть. Есть система падает на середине отправки, то надо вмешаться и удалить уже отправленные сообщения из внешней системы перед продолжением работы.
#19 by rudnitskij
нельзя проверять наличие доков на удаление и их удалять автоматически перед запуском следующего экземпляра?
#20 by xavchik
Это решение опять же их серии блокировки элементов справочника. Оно сможет работать при аварийной остановке Фонового задания. А если задание не было завершено аварийно, а просто даже и не выполнялось в момент ребута, т.е. завершилось корректно последний раз, отметило где-то, что завершилось и потом произошел ребут. Да, отчасти это сможет решить проблему, но это не очень надежное решение.
#21 by rudnitskij
заведите константу, в которую будете писать ИСТИНА или ЛОЖЬ в зависимости от успешности завершения выполнения регламента. Из нее при следующем запуске будете узнавать - надо или не надо удалять отправленные доки
#22 by xavchik
Да, по всей видимости так и придется сделать. Пока решения лучше тоже не вижу. Спасибо!
#23 by rudnitskij
не забудьте в начале выполнения задания писать в нее ЛОЖЬ
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С