→ Выгоняем пользователей из серверной информационной базы. Настройка спящих сеансов Как удалить активных пользователей 1с 8.3

Выгоняем пользователей из серверной информационной базы. Настройка спящих сеансов Как удалить активных пользователей 1с 8.3

При нештатном завершении клиентского приложения (обрыв связи или закрытие окна бразуера) клиентские лицензии «1С: Предприятие 8» могут блокироваться.

Освободить заблокированные клиентские лицензии можно перезагрузкой ПК.

При нештатном завершении клиентского приложения сеанс удерживается еще 20 минут. После этого в версиях до 8.3.5 сеанс удалялся. С версии 8.3.5 сеанс засыпает в в спящем состоянии по умолчанию удерживается еще сутки. Спящий сеанс не занимает клиентскую лицензию «1С: Предприятие 8».

В версии 8.3.5 время засыпания сеанса и время удаления неиспользуемого спящего сеанса можно изменить с помощью специальной или в Конфигураторе 1С в диалоге Администрирование/ Параметры информационной базы, установив рекомендуемые параметры спящего сеанса:

  • время засыпания пассивных сеансов — 300
  • время завершения спящих сеансов — 10

Кстати, кто спит, а кто активен всегда можно посмотреть через консоль сервера на закладке сеансов. В соответствующей колонке «Спящий» есть признак Да/Нет.

Штатно (по версии фирмы 1С) завершить работу в веб-клиенте можно командой «Файл»-«Выход». С версии 8.3.8 добавили команду завершения работы в заголовок приложения, рядом с кнопкой О программе . Она отображается в виде гиперссылки с именем текущего пользователя.При нажатии на гиперссылку открывается диалог с именем пользователя и командой Завершить работу .

Платформа каждые 5 секунд делает пинги клиетом сервер 1С (видны пакеты по 4 байта). На основании «пингов» сервер отслеживает целостность соединения с клиентским приложением. Отсутствие пингов в течение примерно 2 минут серввер интерпретирует как разрыв соединения.

Здравствуйте Дмитрий! Научите меня пожалуйста тому, как выгонять пользователей принудительно из базы, чтобы конфигурацию обновить. Спасибо заранее.

От пользователя: Светлана Николаевна

Здравствуйте, Светлана Николаевна!

Для того, чтобы выгнать пользователей из базы, нужно обладать правами администратора.

Заходим в раздел Администрирование , Поддержка и обслуживание :

Выбираем Блокировка работы пользователей :


Из формы по кнопке можно посмотреть список активных пользователей.

Заполняем сообщение, которое увидят пользователи на своих экранах, задаем интервал блокировки (если конечное время вы не знаете, оставьте поле пустым). Установите также код для разблокировки , т.к. блокировка коснется также и вашего активного сеанса, например установим 1234 .

Нажимаем Установить блокировку . Появится предупреждающее сообщение:


Соглашаемся. Теперь в форме красным цветом написано, что скоро начнется блокировка.


У активных пользователей в это время появляется такое окно:


Ближе к началу блокировку она начинает появляться ежеминутно:


Пользователю необходимо завершить свою работу в программе и выйти. Если самостоятельно он не выйдет, то программа закроется автоматически. При попытке входа в базу пользователь получит такое предупреждение:


У пользователя, установившего блокировку, также появляется сообщение:


Выйдем из базы.

Т.к. блокировка распространяется на все сеансы всех пользователей, нам понадобится установить параметр запуск (тут то и понадобится Код для разблокировки ):



На второй закладке прописываем параметр запуска базы (где 1234 - наш код):


Нажимаем готово. Теперь можем войти как в конфигуратор, так и в пользовательский режим.

Для снятия блокировки базы нужно вернуться в форму блокировки и нажать Снять блокировку .


Если была установлена конечная дата блокировки, то при ее наступлении блокировка прекратится автоматически.

При резервном копировании информационных баз работа пользователей с информационной базой должна быть прекращена.

«Завершить работу пользователей 1С:Предприятия»
Установите флаг, если необходимо произвести завершение работы пользователей с базой перед выполнением архивирования.

Возможные варианты завершения работы пользователей:

  • «Завершить сеансы на сервере 1С:Предприятие»

Вариант отключения пользователей путем принудительного отключения сеансов на сервере 1С:Предприятия. Доступен только для клиент-серверных баз 1С:Предприятия.

Важно: не путайте данного пользователя с пользователем базы 1С:Предприятия и пользователем «администратор центрального сервера».

В консоли сервера 1С:Предприятия администраторы кластера находятся по следующему пути: «Console Root» - «1C:Enterprise 8.3 Central Servers» - «(*)имя компьютера» - «Кластеры» - «Локальный кластер» - «Администраторы» .

«Имя администратора кластера:»
Имя пользователя «администратор кластера».

«Пароль администратора кластера:»
Пароль пользователя «администратор кластера».

«Используется нестандартный порт агента сервера»
Установите данный флаг если порт подключения к «Агенту» сервера отличный от стандартного.

«Порт:»
Порт подключения к агенту сервера 1С:Предприятия. По умолчанию 1540.

Для определения порта агента сервера зайдите в Сервер 1С при клике правой кнопкой мыши на имя компьютера из выпадающего меню выберете «Свойства» - «Параметры центрального сервера 1С:Предприятия» - «IP порт:» .

  • «Вызвать штатное завершение работы пользователей»

Вариант отключения пользователей путем вызова встроенного в типовые конфигурации механизма завершения работы пользователей. Данный механизм основан на использовании процедуры «Блокировка установки соединений с информационной базой».

Алгоритм выполнения следующий:

  • Запуск завершения работы пользователей.
  • Запуск выполнения задачи (архивирование, тестирование и исправление и т.д.).
  • Запуск разрешения работы пользователей.

«Момент:»
Момент завершения работы пользователей.

  • «Завершить работу перед выполнением задачи» . Перед каждым выполнением задачи будет запущена процедура завершения работы пользователей.
  • «Завершить работу только если требуется обновить конфигурацию» . Если задача настроена на выполнение обмена для периферийной базы и из центрального узла получена измененная конфигурация, запустится процедура завершения работы пользователей. В остальных случаях механизм завершения работать не будет.

Для проведения регламентных работ в информационной базе 1С:Предприятия 8 часто необходимо получить монополный доступ к базе. Например, для выполнения бэкапа базы или выполнения регламентных работ на сервере СУБД (реиндексация и т.д.), необходимо отключить все активные сеансы.

Рассмотрим простой способ отключения пользователей от информационной базы с помощью стандартного функционала сервера 1С:Предприятия.

Стандартный функционал

Сразу оговорюсь, что речь будет идти о клиент-серверном варианте работы 1С:Предприятия 8. Для отключения сеансов зайдем в консоль администрирования сервера. Там найдем нужную информационную базы в списке:

Зайдя в свойства ИБ установим опцию "Блокировка начала сеансов включена". При этом может быть необходимо ввсетси логин/пароль учетной записи администратора информационной базы.

Не забывайте установить период блокировки сеанса. Также следует предусмотреть, что на время блокировки сеансов нужно остановить все фоновые задания. Делается это опицей "Блокировка регламентных заданий включена".

При необходимости можно установить текст сообщения пользователям, которым они будут уведомлены за 5 минут до блокировки сеансов, а также код разрешения для входа в информационную базу в период блокировки сеансов.

Код разрешения можно использовать для входа в информационную базу для выполнения регламентных работ, пока остальные сеансы не активные. Вводить код разрешения при подключении к базе нужно с помощью параметров. Например, так будет выглядеть параметр, переданный серверу, если код разрешения "123456".

Войдя в базу таким способом мы получим монополный доступ к информационной базе. Другие сеансы не смогут к нам присоединиться.

Уведомление пользователю о блокировке сеансов выглядит следующим образом (в зависимости от сообщения, введенного администратором). Появляется оно каждую минуту за 5 минут до периода блокировки.

По началу периода блокировки сеансов сначала появляется уведомление:

После сеанс завершается.

Активные сеансы также можно отключить, удалив их из списка активных сеансов. Подобное действие порой необходимо для завершения зависших сеансов.

На практике об отключении пользователей лучше сообщать заранее, чтобы снизить риски потери данных, введенных пользователями, но еще не сохраненных.

1. Отключение пользователей в файловой версии 1С 8.

Для отключение пользователей в файловой версии Я создал *.bat файл с одной строчкой

net session /delete /y

Он отключает все открытые общие файлы на компьютере на котором лежит база.
Далее создал задание (Планировщик заданий Windows), который бы запускал этот файл в назначенное время.
Вы спросите а как же те сеансы которые открыты на компьютере, Я их тоже устранил создав новый *.bat файл со строкой

taskkill /IM 1cv8.exe /f
правда он отключает все запущенные 1С на текущим компьютере, но для меня это не было так страшно так как архивация производилась в ночное время и уже никто не работал в базе, этот батник тоже можно добавить в Планировщик Windows.

2. Отключение пользователей в клиент-серверной базе.

Так же как и в случае файловой базы Я использовал *.bat файлы.
Создал два *.bat файла, первый отключает сервер 1С предприятие, второй его включает очень просто.

net stop "1C:Enterprise 8.2 Server Agent"

net start "1C:Enterprise 8.2 Server Agent"

Добавил два новых задания в планировщик Windows , с разницой во времени 15 минут для того чтобы все зависшие пользователи смогли отключиться, эти действия анологичны Запуск сервера 1С Предприятие и Остановка сервера 1С Предприятие

3. Программный способ отключения пользователей в 1С

Стояла задача выполнять архивацию ежеденевно в 22:30.
В этом способе Я не стал заморачиваться, создал новую роль "НеЗакрывать1С".
Создал новую процедуру в модуле обычного приложения:

Процедура ЗавершениеРаботыПользователей() Экспорт Если НЕ РольДоступна("НеЗакрывать1С") Тогда Если Час(моп_ВыполнениеОперацийНаСервере.ТекущаяДатаНаСервере()) >= 22 Тогда // получаю врмемя на сервере ПрекратитьРаботуСистемы(Ложь); КонецЕсли; КонецЕсли; КонецПроцедуры

Если НЕ РольДоступна("НеЗакрывать1С") Тогда Если Час(моп_ВыполнениеОперацийНаСервере.ТекущаяДатаНаСервере()) >= 22 Тогда // получаю врмемя на сервере ПрекратитьРаботуСистемы(Ложь); КонецЕсли; КонецЕсли;

ПодключитьОбработчикОжидания("ЗавершениеРаботыПользователей", "600");

Функция текущая дата на сервере выглядит так:

Функция ТекущаяДатаНаСервере() Экспорт
Возврат ТекущаяДата();
КонецФункции

Таким образом мы получаем дату на сервере, в случае если в свойствах общего модуля установлена галочка "Сервер", я поставил только её.

Получается текущий код отрубает пользователей на два часа, но обычно после полночи уже никто не заходит в базу.

Если кому-то помогла эта статья буду очень рад.

 

 

Это интересно: