В повседневной работе с файловой базой 1С, особенно когда с ней работает несколько сотрудников, часто возникает задача по автоматическому завершению их сеансов в определенное время. Обычно это требуется для выполнения ночного резервного копирования, обновления конфигурации или других регламентных процедур — для этого удобно использовать расширение блокировки и оповещения пользователей перед обслуживанием. Просто закрыть доступ к папке с базой недостаточно, так как активные сеансы могут держать файлы базы открытыми, что приведет к ошибкам при копировании.
Рассмотрим несколько способов решения этой задачи, от самых простых и "жестких" до наиболее корректных и гибких, которые можно применять в типовой конфигурации "1С:Бухгалтерия 3.0".
Этот метод является "золотой серединой". Мы будем использовать стандартный планировщик Windows для запуска 1С в специальном режиме, который инициирует корректное завершение сеансов всех пользователей. Этот способ не требует доработки конфигурации и является самым безопасным.
Суть в том, чтобы запланировать запуск исполняемого файла 1cv8.exe со специальными параметрами командной строки. Давайте разберем по шагам, как это сделать.
Win + R, введите taskschd.msc и нажмите Enter. Откроется консоль "Планировщик заданий".
1cv8.exe. Путь зависит от версии платформы, например: "C:\Program Files\1cv8\8.3.21.1622\bin\1cv8.exe". Важно: путь лучше взять в кавычки.Рассмотрим, как выглядит строка аргументов для файловой базы:
ENTERPRISE /F"C:\Bases\MyBuh" /N"Администратор" /P"123" /C"ЗавершитьРаботуПользователей" /UC"КодДляРазблокировки"
Проанализируем каждый параметр:
ENTERPRISE — указывает на запуск в режиме 1С:Предприятие./F"C:\Bases\MyBuh" — задает путь к каталогу вашей файловой информационной базы. Замените C:\Bases\MyBuh на свой реальный путь./N"Администратор" — имя пользователя, от имени которого будет выполнен вход для подачи команды. У этого пользователя должны быть административные права в 1С./P"123" — пароль указанного пользователя. Если у пользователя нет пароля, этот параметр можно опустить./C"ЗавершитьРаботуПользователей" — ключевая команда, которая инициирует процедуру завершения сеансов. Система за несколько минут покажет пользователям предупреждение о скором завершении работы./UC"КодДляРазблокировки" — необязательный, но очень полезный параметр. Он устанавливает код, зная который, администратор сможет войти в базу, даже если она заблокирована для остальных. Это тот же код, что и в окне "Блокировка работы пользователей".Администрирование и аудит пользователей в 1С, включая работу с паролями и правами доступа.
После сохранения этой задачи Windows будет каждый день в указанное время запускать 1С, которая корректно завершит все активные сеансы, дав пользователям время сохранить данные — для этого также подойдёт панель централизованного администрирования баз и завершения сеансов. Сразу после этого можно запускать по расписанию задачу резервного копирования.
Этот способ для тех, кто не боится вносить изменения в конфигурацию. Он дает максимальную гибкость, но требует навыков программирования в 1С. Идея заключается в том, чтобы заставить саму 1С периодически проверять, не наступило ли время "Ч", и если наступило — завершать сеанс.
Порядок действий:
ВремяЕжедневногоЗавершенияРаботы с типом "Дата" и составом "Время". В режиме предприятия администратор сможет устанавливать нужное время.
ПриНачалеРаботыСистемы нужно подключить обработчик ожидания. Он будет срабатывать, например, каждую минуту.
// В модуле управляемого приложения
Процедура ПриНачалеРаботыСистемы()
// ... ваш код
ПодключитьОбработчикОжидания("ПроверитьВремяЗавершенияРаботы", 60, Ложь);
// ... ваш код
КонецПроцедуры
// В общем модуле (с установленными флагами "Клиент" и "Вызов сервера")
&НаКлиенте
Процедура ПроверитьВремяЗавершенияРаботы() Экспорт
ВремяВыхода = Константы.ВремяЕжедневногоЗавершенияРаботы.Получить();
Если ВремяВыхода = '00010101000000' Тогда
// Время не задано, ничего не делаем
Возврат;
КонецЕсли;
// Получаем только время из даты
НужноеВремя = НачалоДня(ТекущаяДата()) + (ВремяВыхода - НачалоДня(ВремяВыхода));
Если ТекущаяДата() >= НужноеВремя Тогда
// Время настало, завершаем работу
ЗавершитьРаботуСистемы(Ложь);
ИначеЕсли ТекущаяДата() >= НужноеВремя - 300 Тогда // За 5 минут (300 секунд)
// Предупреждаем пользователя
ТекстСообщения = "Внимание! Через 5 минут работа в программе будет завершена. Пожалуйста, сохраните данные.";
ПоказатьОповещениеПользователя(ТекстСообщения, , , , СтатусОповещенияПользователя.Важное);
КонецЕсли;
КонецПроцедуры
Плюсы: полный контроль над логикой (можно проверять наличие открытых документов и т.д.).
Минусы: требует снятия конфигурации с поддержки, что усложнит будущие обновления. Для мониторинга и прерывания зависших подключений без изменения конфигурации есть обработка автоматического завершения проблемных сеансов по журналу регистрации.
На форумах часто можно встретить совет использовать команду Windows taskkill. Она тоже запускается из "Планировщика заданий".
Команда выглядит так:
taskkill /F /IM 1cv8.exe
Разберем ее:
taskkill — команда Windows для завершения процессов./F — принудительное завершение (force)./IM 1cv8.exe — завершить все процессы с именем образа 1cv8.exe.Почему этот способ крайне не рекомендуется для файловой базы?
Эта команда — аналог "выдергивания шнура из розетки". Процесс 1С завершается аварийно, без сохранения данных, без корректного закрытия файлов базы данных. Это с высокой вероятностью может привести к:
1Cv8.1CD).Для более детализированного мониторинга и управления процессами 1С, когда необходимо контролировать активные сеансы, но без риска повреждения данных, существуют специализированные инструменты, предлагающие более гибкие и безопасные методы, чем принудительное завершение через taskkill — например, обработка принудительного завершения сеансов по расписанию.
Использовать этот метод можно только в самых крайних случаях, когда другие способы не сработали и нужно срочно освободить базу — в качестве безопасной альтернативы подойдёт утилита управления процессами и активными сеансами в 1С.
Для задачи автоматического завершения сеансов в файловой базе 1С по расписанию наилучшим решением является использование "Планировщика заданий" Windows в связке с запуском 1С с параметром командной строки /C"ЗавершитьРаботуПользователей". Этот метод безопасен, надежен, не требует изменения конфигурации и использует встроенные возможности платформы 1С для корректного отключения пользователей.