Отключение активных сеансов пользователей в серверных базах данных 1С 8.2

Отключение всех сеансов пользователей от серверной базы данных, использующее стандартный функционал 1С.  

   В обработке используется стандартный функционал 1С Предприятия для отключения всех активных сеансов пользователей от текущей базы данных. Через COM-соединения обработка подключается к консоли сервера 1С и удаляет сеансы (аналогично ручному удалению через консоль сервера). Идея взята из типовой конфигурации 1С Документооборот КОРП. Для корректной работы в конфигурации необходимо наличие константы «ПараметрыАдминистрированияИБ» с информацией о админском логине и пароле (константа по умолчанию уже присутствует в типовых конфигурациях от 1С).

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

55 Comments

  1. FatheRD

    Отключение всех сеансов пользователей от серверной базы данных, использующее стандартный функционал 1С.

    Перейти к публикации

    Reply
  2. PochekutovOleg

    спасибо

    Reply
  3. Istur

    А логин/пароль разве вводить не нужно? На скриншоте не увидел..

    Reply
  4. FatheRD

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

    Reply
  5. alekseineputin

    Посмотрим-заценим сейчас 😉

    Reply
  6. redwonder87

    Хорошо бы предоставить полный интерфейс действия: кроме удаления пользователей из сеансов еще бы возможность включения блокировки базы. А то юзеры порой очень настойчивы)

    Reply
  7. WellMaster

    Добиваемся аналогичного эффекта с помощью простого батника:

    net stop «1C:Enterprise 8.1 Server Agent»

    net start «1C:Enterprise 8.1 Server Agent»

    Отключает сразу всех от всех баз на этом сервере предприятия. Грубо, но просто.

    Reply
  8. FatheRD

    2WellMaster

    Раньше поступали аналогично. Но с выходом последних релизова платформы (начиная с 8.2.13) срабатывает далеко не всегда. На 8.2.14 можно отключать сервис хоть на 3 часа — сеансы останутся висеть, особенно если речь идет о тонком клиенте. 1С адаптирует платформу для работоспособности с плохими каналами связи, где простое отключение связи между сервером и клиентом — обычное дело. Ваш метод очень скоро окажется полностью неработоспособен.

    Reply
  9. WellMaster

    (7) спасибо за информацию. В таком случае, предлагаемый инструмент действительно будет необходим.

    Reply
  10. trunix

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

    Reply
  11. cerg110

    полезная обработка, а зависшие сеансы тоже отключает?

    Reply
  12. FatheRD

    2cerg110

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

    Reply
  13. agarkin

    очень удобно для терминала

    Reply
  14. Yashazz

    Боян многолетней давности. Ещё coder1cv8 делал в 2008 году, плюс там ещё можно было сообщения отправлять, выборочно отключать и многое другое. А тут — ни сеансов не видно, ни избирательности… Одна кнопка и всё. Некомильфо, считаю.

    ах да, кстати, тот сеанс, из которого кнопка нажата, тоже прервётся?

    Reply
  15. yavasilek

    скачал. пока нет возможности проверить.

    А будет ли работать обработка если допустим запускать батником

    «C:Program Files (x86)1cv828.2.13.219in1cv8.exe» enterprise /S»serverase» /N»user» /P»1234″ /execute d:путьдообработки

    где:

    server — имя сервера

    base — имя базы на сервере

    user — имя пользователя 1с с правами админа

    1234- пароль пользователя 1с

    Reply
  16. FatheRD

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

    Reply
  17. yavasilek

    Еще как вариант можно делать так

    netsh interface ip set address 11 source=static addr=192.168.1.1 mask=255.255.255.0 gateway=192.168.120.254
    «C:Program Files (x86)1cv828.2.13.219in1cv8.exe» config (/S»serverase») /N»user» /P»1234″ /DumpIB «D:ase.dt»
    netsh interface ip set address 11 source=static addr=192.168.2.1 mask=255.255.255.0 gateway=192.168.120.254
    «C:Program FilesWinRARRAR.exe» a -agYYYYMMDD-NN D:ackup «D:1Cbackupelitdbase.dt»

    Первая строка меняет настройки на сетевом интерфейсе, тем самым рвет все соединения

    Вторая строка выгружает базу в dt’шник

    Третья строка делает наши стандартные настройка на сетевом интерфейсе

    Четвертая строка архивирует наш dt’шник и задает ему имя с датой.

    Reply
  18. FatheRD

    Насчет первой строки не уверен, что это будет всегда работать. Сейчас соединения не рвутся даже при выключении сервера 1С на 10 минут. 1С готовит платфрму к работе в облаках )

    Reply
  19. yavasilek

    на 540 точно работает! Проверенно временем. Просто не всегда можно отключить сервер от сети.имхо

    Reply
  20. smilejka

    Какие права нужны пользователю для отключения?

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

    Reply
  21. yavasilek

    (20) smilejka, права админа. будет.

    Reply
  22. wowkai

    а как удалить зависший сеанс в 1с 8.1?

    Reply
  23. Den_Zenit

    Актуально, у нас вечная с этим проблема.

    Reply
  24. yavasilek

    (22) wowkai, обработкой под 8.1 🙂 Поищите тут в архивах точно валяется

    Reply
  25. Feelthis

    Константу ПараметрыАдминистрированияИБ я так понимаю программно нужно поменять?

    Reply
  26. dimakaster

    (17) yavasilek, это сработает только при условии что сервер 1С:Предприятие и сервер БД находятся на одной железке. А как же вы собираетесь делать выгрузку в .dt если серверы физически разнесены на разные железки?

    Reply
  27. yavasilek

    (26) dimakaster, мне какая разница где они находятся? главное чтоб у меня был доступ к серверу 1с. А на той машинке на которой я буду запускать батник — мне главное чтоб 1С стояла.

    Reply
  28. dimakaster

    (27) yavasilek, стоп, а к БД программа как будет обращаться если сеть отрублена, а сервер БД на другой железке?

    Reply
  29. yavasilek

    (28) dimakaster, теперь я понял о чем речь. Можно попробовать вернуть сетевые настройки сразу после их смены, сделать не большую задержку и вернуть. Клиенты ведь уже отвалятся? Хотя может и нет … надо будет попробовать.

    Reply
  30. softest

    + автору

    Reply
  31. olegtymko

    спасибо)

    Reply
  32. Dvornik

    Скачал себе для управляемого приложения, там даже нет управляемой формы. Смысл тогда писать, что для 8.2?

    Reply
  33. Anton_prezident

    +1

    Reply
  34. itar59

    А регламентные задания отключит?

    Reply
  35. basej1c

    у меня не работает ! вообще ничего не происходит !

    база клиен-серверная

    бухгалтерия типовая

    Reply
  36. OscarTT

    Только недавно думали про такое, будем пробовать.

    Reply
  37. electronik

    Здраствуйте Уважаемый разработчик с описанием как то туговато нету толком ни скриншотов ни настройки. По функцианалу то что нада(Вернеее то что ищу).Как в работу будет не знаю (Скачаю протестирую отпишусь)

    Reply
  38. elena_77

    Спасибо. Сейчас нужна такая обработка,

    чтобы в режисе 1с можно было завершать работу пользователей выборочно,

    не заходя в кансоль. Скачаем, протестируем.

    Reply
  39. fin7

    Спасибо, протестирую при возможности. Хорошая обработка, и тоже интересует: зависшие сеансы отключает?

    Reply
  40. Bacemo

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

    Reply
  41. Vigor06

    Друзья,так что там с зависшими сеансами?

    Reply
  42. FatheRD

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

    Reply
  43. wunderland

    (43) Да, есть такая проблема 🙁

    Reply
  44. BuchCentr

    Не работает обработка, может просто на новых платформах.

    Reply
  45. FatheRD

    (45) BuchCentr, а какую платформу Вы используете, можете уточнить?

    Reply
  46. Культурный

    Обработка и не подумала удалить зависшие сеансы.

    Reply
  47. Светлый ум

    не удаляет

    Reply
  48. flyDrag

    Спасибо автору за обработку, я ее переделал на управляемые формы + регл задание сделал все нормально работает

    Reply
  49. elCapitano

    (49) flyDrag,

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

    Reply
  50. fynjy93

    Спасибо!

    Reply
  51. alexnsk

    в 8.3 будет отрабатывать из рег задания?

    Reply
  52. berkutmx

    Спасибо большое!

    Reply
  53. taxcom1

    Все отлично работает!

    Reply
  54. Kontakt

    ошибка выходит

    {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(290)}: Ошибка при вызове метода контекста (GetSessions)

    СписокСеансов = АгентСервера.GetSessions(Кластер);

    по причине:

    Произошла исключительная ситуация: Недостаточно прав пользователя на управление кластером Local cluster

    Reply
  55. tux

    (17) Тогда проще использовать net session /delete

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *