Как автоматически закрывать 1С по расписанию?

1. Ангелина (Sherdrada) 27.12.16 15:29 Сейчас в теме
Как автоматически закрыть 1С?
Пробовала обработкой, которая запускается при запуске 1С,но почему-то не срабатывает.

Перем Тайм;

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    ПодключитьОбработчикОжидания("Таймер",1);
КонецПроцедуры

Процедура Таймер()
    Тайм = Тайм - 1;
    Если Тайм = 0 Тогда
        ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли; 
    
    ЭлементыФормы.Надпись1.Заголовок = "1с будет закрыта через: " + Строка(Тайм) + " секунд";
КонецПроцедуры

Процедура ОсновныеДействияФормыОтменитьЗакрытие(Кнопка)
    ОтключитьОбработчикОжидания("Таймер");
    ЭлементыФормы.Надпись1.Заголовок = "";
КонецПроцедуры

Тайм = 18000;//Секунд
Показать
Ответы
2. Владимир Полевик (pvvpvv) 10 27.12.16 16:21 Сейчас в теме
(1) Может не работать, если у Вас в момент обнуления счетчика открыто модальное окно.
3. Ангелина (Sherdrada) 27.12.16 17:53 Сейчас в теме
(2) как обойти эту ситуацию?
4. Владимир Полевик (pvvpvv) 10 27.12.16 22:01 Сейчас в теме
(3) Если Вы уверены, что модальное окно закроется самостоятельно, достаточно написать

Если Тайм <= 0 Тогда

В противном случае надо избавиться от появления модального окна или обеспечить его закрытие.
5. Владимир Полевик (pvvpvv) 10 27.12.16 22:22 Сейчас в теме
+(4) Забыл. Есть метод глобального контекста ПрекратитьРаботуСистемы() - закрывает сеанс при наличии модальных окон.
6. Ангелина (Sherdrada) 29.12.16 09:43 Сейчас в теме
(5) этот метод тоже не сработал
7. Владимир Полевик (pvvpvv) 10 29.12.16 09:55 Сейчас в теме
(6) Т.е. Вы запустили обработку (для отладки установили 30 сек.), а она не закрыла сеанс? Не верю. Есть еще какие то факторы. Опишите их.
9. Ангелина (Sherdrada) 29.12.16 10:11 Сейчас в теме
(7) вот это написано в бат файле, который запускается через планировщик заданий

@Echo off
chcp 1251 >nul
"C:\Program Files (x86)\1cv8\8.3.9.1818\bin\1cv8.exe" ENTERPRISE /F"D:\Base\БП\" /N"Администратор"/P"0987"/RunModeOrdinaryApplication/Execute­"D:\Для выгрузки УТ-БП\Close1c2.epf"


обработка Close1c2.epf - это код, описанный выше.
после запуска начинается автоматический обмен данными. Который заканчивается раньше таймера.
На отладке срабатывает, а вот утром я захожу и смотрю что сеанс как был запущен ночью, так и висит, хотя все задания по обмену завершены.
11. Владимир Полевик (pvvpvv) 10 29.12.16 10:19 Сейчас в теме
(9) Вместо "/RunModeOrdinaryApplication" написать "/RunModeManagedApplication"
12. Владимир Полевик (pvvpvv) 10 29.12.16 10:21 Сейчас в теме
+(11) Вы запускаете обычное приложение, в котором обработка работать не будет. Будет ли работать обмен? Или написать обработку для обычного приложения.
16. Ангелина (Sherdrada) 29.12.16 13:57 Сейчас в теме
(12) обмен работает 100%
(14) не знаю как посмотреть, через удаленный доступ захожу, процесс висит под моим пользователем, а самой 1с я не вижу на панели инструментов. запускала через планировщика для отладки, завершался процесс нормально сам
18. Владимир Полевик (pvvpvv) 10 29.12.16 14:02 Сейчас в теме
(16) 1С у Вас закрылась, процесс на сервере 1С может висеть. Он в спящем режиме.
19. Ангелина (Sherdrada) 29.12.16 14:27 Сейчас в теме
(18) так если посмотреть в пользователях, то висит там сеанс
20. Владимир Полевик (pvvpvv) 10 29.12.16 14:31 Сейчас в теме
(19) Вы имеете ввиду посмотреть из другого сеанса список активных пользователей. Да, сеанс там будет виден. Так сейчас работает 1С. На различных сайтах много обсуждений на тему "спящих сеансов". Посмотрите.
21. Ангелина (Sherdrada) 29.12.16 15:51 Сейчас в теме
(20) хм. а как убрать этот спящий сеанс?
22. Ангелина (Sherdrada) 29.12.16 15:54 Сейчас в теме
(20) в парметрах информационной базы стоит время отключения сеанса через сутки. Но сеанс не отключается через сутки, а висит так же.
я потестирую в течение двух дней, но сомневаюсь что это "спящий сеанс", потому как это было не только на платформе 8.3, но и на платформе 8.2
23. Владимир Полевик (pvvpvv) 10 29.12.16 16:10 Сейчас в теме
14. Владимир Полевик (pvvpvv) 10 29.12.16 10:33 Сейчас в теме
(9) И обработка висит и таймер отсчитывает в минус?
17. Ангелина (Sherdrada) 29.12.16 13:58 Сейчас в теме
(14) т.е. в теории обработка запускается и срабатывает нормально
8. Антон Минаренков (minarenko) 29.12.16 10:10 Сейчас в теме
Процедура Закрываем() Экспорт
	ПрекратитьРаботуСистемы();
КонецПроцедуры

Процедура ПередНачаломРаботыСистемы()
	ПодключитьОбработчикОжидания("Закрываем", 1);
КонецПроцедуры
10. Ангелина (Sherdrada) 29.12.16 10:14 Сейчас в теме
(8) извините, но этот код куда и зачем?
13. Владимир Полевик (pvvpvv) 10 29.12.16 10:30 Сейчас в теме
Извините, у Вас обычное приложение.
15. Виталий Петров (vipetrov2) 29.12.16 12:26 Сейчас в теме
Можно в наглую завершить процесс.
WshShell=СоздатьОбъект("WScript.Shell");
WshShell.Run("taskkill /f /IM 1cv8.exe");

Но это плохой вариант.
Можно написать на VBScript скрипт, который через функции WinAPI найдет процесс 1С, по нему найдет все хандлеры окон и пошлет сообщение на закрытие или разрушение.
А этот скрипт можно будет запускать откуда угодно.
Оставьте свое сообщение