|
Нравится
Реализация регламентных заданий для 1С 7.7/8.Х стандартными средствами Windows.
09.12.2011
Рубрики: Программирование 1С, Системное администрирование
Ключевые слова: запуск 1С планировщиком задач, запуск 1С под учетной записью SYSTEM
У многих из нас возникала (и возникает) необходимости в запуске 1С в фоновом режиме для выполнения регламентных заданий. Данную задачу я решил самым простым способом, с помощью стандартных возможностей Windows 2003. Полагаю, то, что в статье речь идет о серверной операционной системе, нисколько не уменьшит возможностей применения способа, т.к. фоновые регламентные задания именно на сервере обычно и запускаются.
Способ организации фонового регламентного задания прост.
1) Пишем bat файл запускающий 1с под определенным пользователем и паролем. Очень важно, чтобы 1С запускалась, не запрашивая ни пользователя, ни пароль, т.к. нам не суждено будет визуально увидеть запуск и работу 1С.
а) Заранее предупреждаю что наш bat файл будет запускаться под учетной записью системы - для которой не зарегистрирована в реесте ни одна база 1С. То что мы сделаем дальше нужно для того чтобы зарегистрировать нужные нам базы для системной учетной записи. Тогда 1С при старте не будет "спотыкаться" и запрашивать регистрацию нашей базы.
б) Экспортируем из реестра ветку HKEY_CURRENT_USER\Software\1C в файл baseslist.reg
в) в начало нашего bat файла добавляем строчку "regedit /s d:\bases\baseslist.reg". Все. При первом запуске bat файла из под системной учетной записи в реестр будут добавлены все существующие базы 1с. В последущем эту команду из bat файла можно удалить.
2) Создаем задание в планировщике заданий. Я использую вариант запуска с 08:00 утра с повторным запуском каждые 30 мин.
3)В поле “От имени” вписываем NT AUTHORITY\SYSTEM (поле пароля оставляем пустым). Учетная запись NT Authority\System не имеет прав интерактивного входа, поэтому пользователи не видят программу запущенную от этой учетной записи как и не могут взаимодействовать с программами, запущенными от этой учетной записи.
4) Жмем “Ок”. Все задание создано.
Что такое по сути наше задание? Это наша программа (1С в данном случае) работающая под системной учетной записью, причем ввиду ограничений учетной записи не подающая никаких интерактивных и визуальных “признаков жизни”. Чем наше фоновое регламентное задание отличается от службы? Для наших целей – ничем.
Данный способ можно применять для организации фонового регламентного задания периодически выполняющего некие действия. Например, для организации выгрузки данных о новых поступлениях для рассылки сторонней программой смс оповещающих об этом клиента.
P.S. Дополнения + недостатки метода:
При необходимости запустить наше фоновое задание можно командой
SchTasks /Run /TN "Имя_задания"
По такой же логике наше задание можно было бы остановить командой
SchTasks /End /TN "Имя_задания"
Но это невозможно к сожалению! Дело в том что запущенный процесс 1С не остановить таким образом, он будет висеть пока сам не "примет решение" остановиться. Поэтому мои регламентные задания запускаются с определенной периодичностью (раз в 30 мин например) и отработав, завершаются сами, ожидая следующего вызова.
|
|