Иногда возникает необходимость чтобы 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 = Неопределено;
КонецПроцедуры //