Автоматическая перезагрузка 1с
Автоматический перезапуск 1с при сбоях, отключениях, потерях сети и регламентных работах (средствами 1с)
- Описание
- Подробнее
Описание
Иногда возникает необходимость чтобы 1с была постоянно запущена на компьютере, например для организации учета рабочего времени сотрудников, считывания штрих-кодов и т.д., причем при возможных сбоях, отключениях, потерях сети, регламентных работах — программа должна автоматически перезапускаться без участия пользователя.
Для решения такой задачи можно сделать следующее:
Функционал: интерактивно запускается обработка, которая создает задачу в планировщике задач Windows, эта задача запускает 1с по заданному рассписанию.
каждые 30 секунд обработка переводит время запуска 1с на 5 минут вперед, если 1с зависнет — обработка перестанет переводить время запуска задачи в планировщике, и 1с автоматически перезагрузится через 5 минут, дальше все по циклу.
Реализация.
1. При старте 1с запускаем обработку (например вызывает ее из процедуры ПриНачалеРаботыСистемы)
2. В обработке подключаем обработчик ожидания
ПодключитьОбработчикОжидания(«ПриОжидании», 30);
и создаем процедуру:
Процедура ПриОжидании() //!СМ!
//- MMЧ — создадим файл для перезагрузки 1с !СМ!
БАТ = Новый ТекстовыйДокумент;
// БАТ.ДобавитьСтроку(«pskill 1cv8»); //- MMЧ — удалание приложения, на компьютере необходимо установить pskill.exe !СМ!
БАТ.ДобавитьСтроку(«taskkill /IM 1cv8* /f«); //- MMЧ — удалание приложения, штатные средства закрытия приложения
БАТ.ДобавитьСтроку(«start /max C:\Progra~1\1cv82\Common\1cestart.exe enterprise /AppAutoCheckMode /sserver1c\1c8Complex /N»»User»» /pПароль»); //- MMЧ — запуск 1с под конкретным пользователем !СМ!
БАТ.Записать(«c:\client.bat»,КодировкаТекста.ANSI);
//- MMЧ — СОЗДАИМ В ПЛАНИРОВЩИКЕ ЗАДАЧ ЗАДАЧУ И ПЕРЕВЕДЕМ У НЕЕ ВРЕМЯ НА 5 МИНУТ ВПЕРЕД !СМ!
//- MMЧ — КОГДА 1С ПОВИСНИТ, ЧЕРЕЗ 5 МИНУТ ПЛАНИРОВЩИК ЕГО ПЕРЕЗАПУСТИТ !СМ!
WshShell = Новый COMОбъект(«WScript.Shell»);
///Найдем задачу и удалим — это для XP, для более поздних систем можно использовать параметр /F , тогда искать и удалять задачу не требуется
строкаКоманды = «schtasks /delete /TN «»1c RESTART»» /F»;
WshShell.Run(строкаКоманды, 0, Истина);
///Создаем задачу
//- MMЧ — проверить создание задачи, можно запустив строку коменды в командной строке Windows !СМ!
//- MMЧ — для вызова помощи по параметрам введите schtasks /? в командной строке !СМ!
строкаКоманды = «schtasks /create /sc minute /mo 10 /st «+Формат(ТекущаяДата()+60*5, «ДЛФ=T»)+» /tn «»1c RESTART»» /tr c:\client.bat /ru «»DOMEN\UserWindows»» /RP «»ПарольWindows»» «;
WshShell.Run(строкаКоманды, 0, Истина);
WshShell = Неопределено;
КонецПроцедуры //

