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

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

В повседневной работе с файловой базой 1С, особенно когда с ней работает несколько сотрудников, часто возникает задача по автоматическому завершению их сеансов в определенное время. Обычно это требуется для выполнения ночного резервного копирования, обновления конфигурации или других регламентных процедур — для этого удобно использовать расширение блокировки и оповещения пользователей перед обслуживанием. Просто закрыть доступ к папке с базой недостаточно, так как активные сеансы могут держать файлы базы открытыми, что приведет к ошибкам при копировании.

Рассмотрим несколько способов решения этой задачи, от самых простых и "жестких" до наиболее корректных и гибких, которые можно применять в типовой конфигурации "1С:Бухгалтерия 3.0".

Решение 1: Автоматизация штатного механизма 1С через Планировщик заданий Windows (Рекомендуемый способ)

Этот метод является "золотой серединой". Мы будем использовать стандартный планировщик Windows для запуска 1С в специальном режиме, который инициирует корректное завершение сеансов всех пользователей. Этот способ не требует доработки конфигурации и является самым безопасным.

Суть в том, чтобы запланировать запуск исполняемого файла 1cv8.exe со специальными параметрами командной строки. Давайте разберем по шагам, как это сделать.

  1. Открытие Планировщика заданий. Нажмите Win + R, введите taskschd.msc и нажмите Enter. Откроется консоль "Планировщик заданий".
  2. Создание новой задачи. В меню "Действие" выберите "Создать простую задачу...". Задайте имя, например, "Завершение сеансов 1С", и описание.
  3. Настройка триггера (расписания). Выберите, как часто должна выполняться задача. Для нашей цели идеально подойдет "Ежедневно". Укажите время, когда все пользователи уже должны закончить работу, например, 21:00.
  4. Настройка действия. На шаге "Действие" выберите "Запустить программу".
  5. Указание программы и аргументов. Это самый важный шаг.
    • В поле "Программа или сценарий" укажите полный путь к файлу 1cv8.exe. Путь зависит от версии платформы, например: "C:\Program Files\1cv8\8.3.21.1622\bin\1cv8.exe". Важно: путь лучше взять в кавычки.
    • В поле "Добавить аргументы (необязательно)" нужно вставить специальную строку, которая и даст команду 1С завершить сеансы.

Рассмотрим, как выглядит строка аргументов для файловой базы:


ENTERPRISE /F"C:\Bases\MyBuh" /N"Администратор" /P"123" /C"ЗавершитьРаботуПользователей" /UC"КодДляРазблокировки"

Проанализируем каждый параметр:

Администрирование и аудит пользователей в 1С, включая работу с паролями и правами доступа.

После сохранения этой задачи Windows будет каждый день в указанное время запускать 1С, которая корректно завершит все активные сеансы, дав пользователям время сохранить данные — для этого также подойдёт панель централизованного администрирования баз и завершения сеансов. Сразу после этого можно запускать по расписанию задачу резервного копирования.

Решение 2: Программная реализация внутри 1С

Этот способ для тех, кто не боится вносить изменения в конфигурацию. Он дает максимальную гибкость, но требует навыков программирования в 1С. Идея заключается в том, чтобы заставить саму 1С периодически проверять, не наступило ли время "Ч", и если наступило — завершать сеанс.

Порядок действий:

  1. Добавление константы. В конфигураторе добавьте новую константу, например, ВремяЕжедневногоЗавершенияРаботы с типом "Дата" и составом "Время". В режиме предприятия администратор сможет устанавливать нужное время.
  2. Создание обработчика ожидания. В модуле управляемого приложения (или в общем модуле, вызываемом из него) в процедуре ПриНачалеРаботыСистемы нужно подключить обработчик ожидания. Он будет срабатывать, например, каждую минуту.
    
    // В модуле управляемого приложения
    Процедура ПриНачалеРаботыСистемы()
        // ... ваш код
        ПодключитьОбработчикОжидания("ПроверитьВремяЗавершенияРаботы", 60, Ложь);
        // ... ваш код
    КонецПроцедуры
    
  3. Реализация процедуры проверки. Создайте экспортную процедуру в общем модуле, которую будет вызывать обработчик.
    
    // В общем модуле (с установленными флагами "Клиент" и "Вызов сервера")
    &НаКлиенте
    Процедура ПроверитьВремяЗавершенияРаботы() Экспорт
        
        ВремяВыхода = Константы.ВремяЕжедневногоЗавершенияРаботы.Получить();
        Если ВремяВыхода = '00010101000000' Тогда
            // Время не задано, ничего не делаем
            Возврат;
        КонецЕсли;
        
        // Получаем только время из даты
        НужноеВремя = НачалоДня(ТекущаяДата()) + (ВремяВыхода - НачалоДня(ВремяВыхода));
        
        Если ТекущаяДата() >= НужноеВремя Тогда
            // Время настало, завершаем работу
            ЗавершитьРаботуСистемы(Ложь);
        ИначеЕсли ТекущаяДата() >= НужноеВремя - 300 Тогда // За 5 минут (300 секунд)
            // Предупреждаем пользователя
            ТекстСообщения = "Внимание! Через 5 минут работа в программе будет завершена. Пожалуйста, сохраните данные.";
            ПоказатьОповещениеПользователя(ТекстСообщения, , , , СтатусОповещенияПользователя.Важное);
        КонецЕсли;
        
    КонецПроцедуры
    

Плюсы: полный контроль над логикой (можно проверять наличие открытых документов и т.д.).
Минусы: требует снятия конфигурации с поддержки, что усложнит будущие обновления. Для мониторинга и прерывания зависших подключений без изменения конфигурации есть обработка автоматического завершения проблемных сеансов по журналу регистрации.

Решение 3: Принудительное завершение процесса через taskkill (Не рекомендуется)

На форумах часто можно встретить совет использовать команду Windows taskkill. Она тоже запускается из "Планировщика заданий".

Команда выглядит так:

taskkill /F /IM 1cv8.exe

Разберем ее:

Почему этот способ крайне не рекомендуется для файловой базы?

Эта команда — аналог "выдергивания шнура из розетки". Процесс 1С завершается аварийно, без сохранения данных, без корректного закрытия файлов базы данных. Это с высокой вероятностью может привести к:

Для более детализированного мониторинга и управления процессами 1С, когда необходимо контролировать активные сеансы, но без риска повреждения данных, существуют специализированные инструменты, предлагающие более гибкие и безопасные методы, чем принудительное завершение через taskkill — например, обработка принудительного завершения сеансов по расписанию.

Использовать этот метод можно только в самых крайних случаях, когда другие способы не сработали и нужно срочно освободить базу — в качестве безопасной альтернативы подойдёт утилита управления процессами и активными сеансами в 1С.

Итог

Для задачи автоматического завершения сеансов в файловой базе 1С по расписанию наилучшим решением является использование "Планировщика заданий" Windows в связке с запуском 1С с параметром командной строки /C"ЗавершитьРаботуПользователей". Этот метод безопасен, надежен, не требует изменения конфигурации и использует встроенные возможности платформы 1С для корректного отключения пользователей.

← На главную