Ситуация, когда работа пользователей в 1С:Предприятие внезапно прерывается в одно и то же время (например, ровно в 22:00), является классической проблемой стыка системного администрирования и программирования 1С. При этом в Журнале регистрации фиксируется лаконичная запись «Завершение сеанса», которая не дает прямого ответа на вопрос о причинах произошедшего. В этой статье мы подробно разберем, как провести комплексную диагностику системы и найти скрытый триггер, отключающий пользователей.
Прежде чем переходить к настройкам сервера, нам необходимо исключить влияние самой конфигурации. Проанализируем возможные места, где может быть заложена логика завершения работы. Проверим наличие вызовов программного отключения соединений. В глобальном поиске по конфигурации (включая расширения) поищем использование метода АдминистрированиеИнформационнойБазы.ОтключитьСоединениеИнформационнойБазы(). Если такой вызов найден, нужно проверить условия, при которых он срабатывает.
Рассмотрим также вероятность использования обработчиков ожидания. В модуле управляемого приложения или в коде конкретных форм может быть настроен метод ПодключитьОбработчикОжидания(), который проверяет текущее время и при наступлении 22:00 вызывает процедуру ЗавершитьРаботуСистемы().
Не забудем проверить состояние блокировок. Для этого проанализируем содержимое специализированных регистров. Выполним запрос к базе данных или воспользуемся консолью запросов:
ВЫБРАТЬ * ИЗ РегистрСведений.БлокировкиСеансовОбластейДанных
Если в этом регистре присутствуют записи с установленным временем начала, совпадающим с моментом вылета пользователей, значит, срабатывает механизм блокировки регламентных заданий или областей данных.
Одной из наиболее частых причин принудительного разрыва соединений являются регламентные операции на уровне СУБД. Если вы используете Microsoft SQL Server, нам необходимо проверить Maintenance Plans (Планы обслуживания). Рассмотрим по шагам, как это сделать:
Часто в скриптах обслуживания прописывается предварительное переведение базы в Single User Mode или выполнение команд, сбрасывающих активные транзакции, что неминуемо ведет к обрыву сеансов 1С. Даже если бэкап настроен на другое время, длительные операции (например, проверка целостности базы) могут начинаться именно в 22:00.
Выясним, не связано ли отключение с жизненным циклом рабочих процессов rphost. В консоли администрирования кластера 1С проверим параметры рабочего сервера:
Проанализируем настройки учетных записей пользователей в домене. Если сервер находится под управлением Active Directory, заглянем в свойства учетной записи пользователя на вкладку Account. Нажмем кнопку Logon Hours (Часы входа). Если там установлен запрет на работу после 22:00, Windows начнет принудительно разрывать сетевые сессии, что приведет к закрытию 1С.
Рассмотрим также Планировщик задач Windows (Task Scheduler). Нам нужно найти задания, запускающиеся в 21:55–22:05. Это могут быть:
Temp. Если скрипт удаляет файлы, занятые сеансом 1С, приложение аварийно завершается.Если пользователи работают через удаленный рабочий стол, проверим настройки Групповых политик (GPO). Перейдем по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничения сеансов по времени.
Убедимся, что не установлены жесткие лимиты на длительность активной или бездействующей сессии. Также стоит проверить параметры Keep Alive в реестре Windows, чтобы исключить обрыв соединений из-за простоя сетевого оборудования (роутеров или файрволов), которые могут сбрасывать сессии по таймауту.
Для того чтобы точно определить виновника, выполним следующий алгоритм действий:
TerminalServices-LocalSessionManager или ошибки DistributedCOM, значит, корень проблемы лежит в настройках операционной системы, а не в коде 1С.Таким образом, последовательный аудит от уровня кода до уровня сетевых политик позволит локализовать причину и обеспечить стабильную работу пользователей в любое время суток.