Отключение активных сеансов пользователей в серверных базах данных 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 не будет опубликован. Обязательные поля помечены *